Эффективный программинг

Linux/bash

  • navigate with pushd <path>, popd
  • drag objects from Nautilus to terminal
  • use vars
    denis@denishp2-ub:/$ a='cd /etc'
    denis@denishp2-ub:/$ echo $a
    cd /etc
    denis@denishp2-ub:/$ $a
    denis@denishp2-ub:/etc$ 
  • use ~/.bash_aliases (create if doesn't exist)
    alias robo='cd ~/PrjEclipse/jroboplc'
  • use Groovy as alternative to bash
  • use Ruby as alternative to bash

Useful findings:

  • find and replace text in group of files:
    find . -type f -exec sed -i "s/old_text/new_text/g" {} \;

Automation

Codewriting

  • plenty of short methods against few huge ones. Three lines of code for a method doesn't take much time to figure out what that method does. If you put lots of comments into your method it is a sign to split it up.
  • FindBugs - static analysis tool (java)
  • PMD - source analysis tool (java)
  • Panopticode - bunch of analysis tools (java)
  • Cuberture - static analysis (java/groovy)

Points

  • Prefer typing over mousing.
  • Take the time to learn all the hidden keyboard shortcuts of your universe.
  • For any symmetric operation on multiple lines of text, find a pattern and record a macro.
  • Don’t type the same commands over and over again.
  • Spend a little time each day to make every day more productive.
  • Replace file hierarchies with search.
  • Don’t spend time doing by hand what you can automate.
  • Performing simple, repetitive tasks squanders your concentration.
  • Timebox speculative development.
  • Use virtualization to canonicalize dependencies for your projects.
  • Out-of-date documentation is worse than none because it is actively misleading.
  • Always keep “living” documentation.
  • Whiteboard + digital camera trumps a CASE tool.
  • Repetition is the single most diminishing force in software development.
  • Testing is the engineering rigor of software development.
  • Refactor comments to methods.
  • Static analysis tools represent cheap verification.
  • Don’t create global variables, even the object kind.
  • YAGNI - “YOU AIN’T GONNA NEED IT”
  • Don’t pay complexity tax unless you absolutely must.
  • Maximize work on essential complexity; kill accidental complexity.
  • Don’t pay complexity tax unless you absolutely must.
  • Encapsulate all implementation details away from public methods.
  • Find your perfect editor and learn it inside and out.
  • Good knowledge of regular expressions can save orders of magnitude of effort.
  • Use a “real” scripting language for automation chores.
  • Keep knowledge as plain text

Books

  • «The Mythical Man-Month»
  • Hunt and Thomas’s «The Pragmatic Programmer» (Addison-Wesley)
  • Beck’s «Smalltalk Best Practice Patterns» (Prentice Hall)
dev/other/efficientprog.txt · Последние изменения: 2012/09/24 18:52 — jamis7005
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0