Saturday, April 9, 2011

BOOK REVIEW: 97 Things Every Programmer Should Know - Part III

Previously: http://shloemi.blogspot.com/2011/04/book-review-97-things-every-programmer_08.html


More Highlights... 
  • Choose your tools with care... Keep in mind a few things when selecting tools for your application:
    • Each tool have it's own assumptions, this can be in conflict with your architecture assumptions. This will lead to conflicts, workaround and will make your architecture and code more complex.
    • Upgrading the selected tool or tools might not be an easy and automated task, this can lead to upgrade problems or complexity.
    • Some tool's configuration is not an easy task, better keep than in mind.
    • Heavy dependence on one tool will probably be a constrain in the end, leading to heavy price, slow maintenanceperformance, can lock/kill your tool's ability to evolve, bad tool can lead to the anti-pattern 'lava flow'.. and more...
    • Free doesn't totally mean free. Support costs, a lot. Check support agreements first.
    • Free - GNU license means you have to distribute your source code!
    • ISOLATE the tools by using Interfaces and Layers.
  • Code in the Language of the Domain
    • There is no functional difference between: 
      • if (portfolioIdsByTraderId.get(trader.getId()) {.containsKey(portfolio.getId())) {...}} // AND
      • if (trader.canView(portfolio)) {...}
    • User domain names like: Trader and Portfolio... This will reveal secrets instead of creating ones.
    • Domain names will make your code more obvious when a new programmer will do  reverse engineering to understand your code.

That's it for now.

Next: TBD...

No comments:

Post a Comment