Submitted by heartin on Sat, 09/05/2015 - 22:20
This note will list few things you should try to avoid in your design. Please also see notes on SOLID Principles and summary of additional design principles and best practices.
Run-Time Type Identification (RTTI)
Cyclomatic complexity (CC)
Submitted by heartin on Sat, 09/05/2015 - 22:14
SOLID is a mnemonic acronym introduced by Michael Feathers for five of the principles named by Robert C. Martin, and when applied together, these intend to make it more likely that a programmer will create a system that is easy to maintain and extend over time.
(++) Single responsibility principle (SRP)
Submitted by heartin on Mon, 06/01/2015 - 22:06
Primary goal of Enterprise Java Beans (EJBs) were to allow developers to write business side logic in enterprise applications without worrying about middleware requirements such as transaction management, persistence operations, security, distribution, remoting etc. The older EJB programming model had many problems and POJO programming model was an alternative means to solve those problems.
Submitted by heartin on Sun, 02/22/2015 - 03:49
Exceptions should be preferred over error codes as returning error codes will force you to have an “if” statement to check for error code, which may be confusing to some readers and there is also a chance that the caller may forget to check for error codes. If you use error codes, you will also need to have some class that defines all error codes and all classes that use those error codes will be dependent on this class.
Submitted by heartin on Sat, 02/21/2015 - 09:03
Is formatting your code important? Formatting your code properly is as important as working code. Proper formatting increases readability and hence maintainability, and also give readers the impression that the code was written by professionals. Let us quickly see some of the formatting issues from vertical as well as horizontal perspectives.
Submitted by heartin on Fri, 02/20/2015 - 22:06
Are comments needed in your programs? If your code is very clear and expressive, then you won’t ideally need comments. By naming your identifiers correctly you can avoid the need for comments in lot of places within your code. So why learn about writing good comments? Due to reasons including the limitations in expressiveness of a programming language, we may have to still use comments, and for these use cases we will need to learn to write good comments.
Submitted by heartin on Fri, 02/20/2015 - 10:27
Below simple list of principles and practices can help you write cleaner methods in your program:
Methods should be as small as possible and should have descriptive names that explain its purpose without the need of any extra comments. Bigger methods should be refactored to move contents that can be grouped together, into other methods with descriptive names that reflect the task done by that method and then invoke those methods from the original method.
Submitted by heartin on Wed, 02/18/2015 - 19:52
Is naming identifiers like classes, methods and variables important in developing clean code? It is.
Below is a set of simple rules that you can use as a quick reference to name your identifiers correctly:
Use intention revealing names that can explicitly tell why it exists, what it does and how it is used, so that others can easily understand the code. E.g. int elapsedTimeInDays instead of int d.
Submitted by heartin on Sat, 02/07/2015 - 09:20
Object Oriented Design principles are very important and are sometimes considered even more important than design patterns. All design patterns are based on one or more of the design principles. Having thorough understanding of the design principles will help you understand the design paterns better and faster, and will even help you solve many design scenarios if you can't find a design pattern fitting that scenario.
Submitted by heartin on Sat, 03/09/2013 - 11:19
This article lays down some of the best practices which you can use during your design or code reviews, and assumes that you are familiar with the basics of mutithreading in java available at articles/multithreading.