Это старая версия документа.


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

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

Eclipse

  • use shortcuts list (Ctrl+Shift+L)
  • use Key Promoter plugin. Help-Install New Software → http://update.mousefeed.com/
  • cool shortcuts:
    Ctrl-Shift-T        Goto to class (use capitals)
    Ctrl-Shift-R        Goto to file
    Ctrl-O              Symbol list
    Ctrl-J              Incremental search
    Ctrl-E              Recently edited files
    Alt-Shift-L         Introduce variable
    Alt-Shift-Up        Escalating selection

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.1328364311.txt.gz · Последние изменения: 2012/02/04 18:05 — jamis7005
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0