Skip to main content

Things to check while Code Review in Java



Code review is important part of any application. Some time we avoid doing it due to time constraints or lack of resource availability but if we do it in practice it pays off very well in terms of quality & maintainability of code.

    We have to look for couple of things while code review & i will try to explain most of them here.

Functionality 
This is most important part in code review that code is functional as required. Requirement is completely addressed by code or not.

Logging & readability
Code should be readable. It should be formatted properly like indentations & space should be proper and as matches as per set convention.proper comment should in place to understand code as well as for debugging perspective.

Naming & other java as well client as Standards
you should follow naming standards as prescribed in java.Apart from industry standards we should take care of client coding standards if there are any.

Performance
Performance checking is difficult to measure but its important to review code performance while code review Do we have any SLA to follow or non functional requirement about any piece of code.Are we able to do some task in required time.Below could be some parameter.
Response Time : Time taken between providing response & request.
Latency : delay in serving request or to reach request to server.
Throughput : per second request handling.
Scalability : How will system behave if we try to scale horizontally or vertically. 

Unwanted code & library                                          Check if any unwanted code or library exist in your code.Any unused import should also be get removed. 

Simplicity & Optimization
We should check for code if it can be simplified as Normally a task can be done multiple ways and i believe we should go for simplest code if possible. Along with simplicity we should for optimization of code as well.
if we can write code with less lines without introducing much complexity. 

Concurrency
You should check code of it is thread safe or not.If it is a multi threaded code we should check if shared resources & method synchronized properly or not.Make sure excess synchronization is not present because it affect performance & leads to dead lock as well. 

Security
here we should check for security aspect like if we are not saving sensitive data. Are we not logging sensitive information.use prepared statement in spite of normal statement.check for sql injection & other security breaches.Using SSL if required.check for  different kind of authentication mechanism.Follow all security best practices.


Exception Handling
We should check if we are handling exceptions in our code properly.We may get exception due to unexpected inputs or getting unexpected response if we are connecting from other external system etc.
Some common exception scenarios  could be
  • Invalid format values
  • Null objects
  • Boundary conditions
  • Empty objects

Resource release
We should check for resource release like Streams, connections etc after its use.







Comments

Popular posts from this blog

Conversion from Clob To String in java and Vice versa

/***reading Clob data from oracle table and setting to Pojo**/
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import oracle.sql.CLOB;

import com.poc.one.pojo.StagedMessage;

public class MessageDao {
private static String url = "jdbc:oracle:thin:@172.22.22.198:1521:ORACLE";
private static String username = "ABC123";
private static String password = "ABC123";


public  List readClobToBO() throws Exception {

Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = DriverManager.getConnection(url, username, password);
PreparedStatement stmt = conn
.prepareStatement("SELECT ID, STORE_ID, MESSAGE_DATA FROM STAGED_MESSAGE ");
ResultSet resultSet = stmt.executeQuery();
List msgList= new ArrayList();

while (resultSet.next()) {

StagedMessage message = new StagedMessage();

message.setId(resultSet.getInt(1));
message.setStoreId(r…

Portable Java 8/ JDK8 setup without admin rights

Some time we got machine to work where we don't have access rights to install anything or if you do not want to install. You can get latest jdk running by this trick. Just follow step step & do comment if you like it.

Step by Step details to get running java from .exe setup without any admin rights. Get portable 7 zip from portableapps.comdownload java 8 from oracle  http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.htmlopen 7 zip & extract jdk-8u102-windows-x64.exeyou will see below folders                .data                .pdata                .rdata                .reloc                .rsrc                .text                CERTIFICATE

          5.Go inside E:\jdk-8u102-windows-x64\.rsrc\1033\JAVA_CAB10you will find 111 file.

         6.extract it it some folder where you can find tools.zip again extract that to some folder say Java & copy it to very first folder of setup along with .data,.rsrc etc.
         7.Go to folder where you have co…

GOF Design pattern with Java & Real World Examples

What are design patterns? 

So basically these are just collection of best practices to solve recurring problem by different kind of class arrangement. These arrangement could be based on creation of object or structural basis or on basis of required behavior.




Creational Design Pattern
Prototype Designpattern we will like to use this designpattern whenever creation of initial object & setting required default values is costly. So we just create 1 object & later on whenever more objects required we can provide initial object by just cloning of given object.Java Example is java.lang.Object#clone()
Builder DesignPattern When we jave object structure are complex and complicated we would go for this. we will be separating object creation from internal representation. With help of some simple interface we would create complicated Object.
Singleton When we need one instance per JVM. Example : Java Run time environment Java.lang.System.  java.lang.StringBuilder, Spring Beans are singleton …