1. Ошибочность

Может ли мой код вызывать ошибки?

Моя обязанность как разработчика программного обеспечения — поставлять код, который не только работает, но и не ломается. Нет ничего хуже, чем отправлять подверженный ошибкам код в производство. Пострадают не только ваши пользователи, но и ваша служба поддержки клиентов, ваш бренд и ваша компания. . (Другими словами, вы теряете $$.)

Единственное исключение из этого правила — если вы взламываете прототип. Но даже в этом случае я ожидаю, что вы сведете количество ошибок к минимуму. В противном случае, как вы собираетесь демонстрировать свой прототип?

Написание кода без ошибок означает, что ваш код также пригоден для тестирования. Тесты дадут вам уверенность в том, что ваш код по-прежнему работает так, как вы ожидаете. Хотя это может потребовать немного больше усилий, вы избавите себя от беспокойства, когда измените его позже. (То есть, если вы не предпочитаете PDD или разработку, основанную на молитвах.)

2. Ремонтопригодность

Мой код ремонтопригоден?

Чем хуже спроектирована кодовая база, тем сложнее ее изменить. Чем сложнее изменить код, тем больше стоимость технического долга.

Зачем одобрять плохое архитектурное решение, если в долгосрочной перспективе оно причинит вам больше болезни? Но вы говорите: Это всего лишь краткосрочное решение!. Теперь, если вы позволите запаху кода остаться — каким бы маленьким он ни был — он исчезнет. неизбежно приведет к порче других частей кодовой базы, поскольку она затрагивает все больше и больше мест. Тогда у вас будет гораздо большая проблема на вашей тарелке.

Кроме того, имейте в виду, что однажды вам может понадобиться вернуться к своему старому коду и изменить его, когда вы давно забудете, что делали. Или, что еще хуже, кто-то другой может рефакторить ваш код и увидеть его впервые.

Теперь поддерживающие улучшения могут быть такими же простыми, как улучшение читабельности. Удобочитаемость может означать несколько вещей:

  • Ваш код хорошо задокументирован.
  • Переменные, функции и классы именуются семантически.
  • Вы следуете полезным парадигмам и принципам (например, KISS и DRY).
  • Ваш код явный.
  • Вы не пытаетесь быть умным или предсказывать будущее.
  • Вы следуете руководству по стилю и придерживаетесь соглашений по коду.

Этот список не является исчерпывающим, и вы оцените удобочитаемость по мере разработки большего количества программ.

3. Производительность

Как мой код повлияет на производительность?

Производительность означает насколько хорошо работает ваш код на основе критериев, которые вы выбрали для измерения. Конечно, то, что вы выбираете для измерения, — это то, что вы считаете важным.

Для некоторых программ скорость имеет решающее значение; в то время как для других использование памяти имеет первостепенное значение. Каждое программное обеспечение имеет свои уникальные требования и ограничения. Наша работа как разработчика состоит в том, чтобы понимать эти требования и сбалансировать компромиссы, чтобы приложение могло работать наилучшим образом с учетом контекста. Однако бывают случаи, когда для достижения результата необходимы жертвы. В таком случае нам придется подвергнуть сомнению цели, ценности и философию продукта, чтобы принять наилучшее решение.

Но не все оптимизации производительности одинаковы. Некоторые оптимизации приносят больший выигрыш, чем другие. Мой совет — сосредоточьтесь на принципе Парето или правиле 80/20:

80% прироста производительности приходится на 20% кода

Другими словами, сосредоточьтесь на глобальной/максимальной оптимизации, а не на локальной/минимальной оптимизации. Все остальное можно рассматривать как преждевременную оптимизацию, которая требует вашего внимания только тогда, когда возникает необходимость. Учитывая, что требования, программное обеспечение и среда постоянно меняются, новые области для улучшения всегда будут на горизонте.