Timeless Laws of Software Development

Завжди круто почути історії досвідченого розробника, переглянути історію проблем та пошук рішень. Книгу “Timeless Laws of Software Developmen” написав досвідчений розробник – Jerry Fitzpatrick.

Цінність книги – бачення ключових факторів якісної розробки програмного забезпечення: плануйте заздалегідь, пишіть clear code, запобігайте виникненню помилок у коді, створюйте програми стійкими, запобігайте створенню надлишкового зчеплення між компонентами.

Хоч Джері працював як senior software consultant and instructor, specializing in scientific and engineering applications (telecommunications, biomedical, fitness, energy, and manufacturing) його досвід вирішення задач для Windows додатків або складні алгоритми пов’язані з медичним обладнанням будуть цікавий будь-яким розробникам.

Ось вам короткий перелік рекомендацій Джері (склад книги)Ж

  1. Plan before implementing
    1. Understand the requirements
    2. Reconcile conflicting requirements
    3. Check the feasibility of key requirements
    4. Convert assumptions to requirements
    5. Create a development plan
  2. Keep the program small
    1. Limit project features
    2. Avoid complicated designs
    3. Avoid needless concurrency
    4. Avoid repetition
    5. Avoid unnecessary code
    6. Minimize error logging
    7. Buy, don’t build
    8. Strive for Reuse
  3. Write clearly
    1. Use names that denote purpose
    2. Use clear expressions
    3. Improve readability using whitespace
    4. Use suitable comments
    5. Use symmetry
    6. Postpone optimization
    7. Improve what you have written
  4. Prevent bugs
    1. Pace yourself
    2. Don’t tolerate build warnings
    3. Manage Program Inputs
    4. Avoid using primitive types for physical quantities
    5. Reduce conditional logic
    6. Validity checks
    7. Context and polymorphism
    8. Compare floating point values correctly
  5. Make the program robust
    1. Don’t let bugs accumulate
    2. Use assertions to expose bugs
    3. Design by contract
    4. Simplify exception handling
    5. Use automated testing
    6. Invite improvements
  6. Prevent excess coupling
    1. Discussion of coupling
    2. Flexibility
    3. Decoupling
    4. Abstractions (functional, data, OO)
    5. Use black boxes
    6. Prefer cohesive abstractions
    7. Minimize scope
    8. Create barriers to coupling
    9. Use atomic initialization
    10. Prefer immutable instances

Додаткові посилання:

Залишити відповідь