Summary

Chapter 2 - Meaningful Names

  • Don't name your variables like accountList:
    • What if it's not a List?
    • Even if it's a List, what if you change the datastructure after?
    • Better naming would be accounts or accountGroup
  • Avoid noise word (things like Info, Data, Manager, Processor)
    • Imagine having CustomerInfo, CustomerData would be confusing
    • Or even Customer vs CustomerObject
    • or getActiveAccount(), getActiveAccounts(), getActiveAccountInfo()
      • Don't name variable with tiny bit of difference as well
  • Put magic number in constants for searchability
    • For example, it's easier to search for MAX_STUDENTS comparing to 7
  • Don't put type in variable name:
    • For example, don't name PhoneString. What if it's not a String anymore later on
  • Don't put prefix in variable name for example m_dsc
  • Don't name your interface starting with I
    • Why: Unnecessary for the user to know that they're receiving an interface.
      • If you must specify one, even ShapeFactoryImpl for the implementation class is better than IShapeFactory
  • Don't introduce another a, or b instead of i,j,k for loop
  • Method name should starts with verb. For example
    • postPayment, receivePayment, save
    • Also follow JavaBean standard by using get, set, is
  • For constructor overloading, it's better to have a static factory method instead. For example
    • Number myNumber = Number.fromFoat(23.0) instead of new Number(23.0)
    • and make the overload constructor to private