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

Я хочу, чтобы мой код что-то делал, чтобы я это сделал.

Как только вы это сделаете, вы двинетесь дальше.

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

Теперь вот в чем проблема. В лучшем случае через месяц вы обнаружите, что ваше решение было неправильным, а теперь, если вы не думали о предыдущих вещах, вам будет сложно исправить проблему. В большинстве случаев я вижу, что разработчики добавляют кучу условных обозначений потока, которые заставляют реализацию делать что-то совершенно отличное от исходной. Однако они не удаляют предыдущий код, он все еще там и навсегда, поскольку они твердо верят, что первоначальная реализация была хорошей, потому что эй, она работала тогда, так что это просто исправление, верно? И внезапно это становится проклятием, которое преследует любого разработчика, которому приходится работать с этим кодом. Никто никогда не поймет, что, возможно, никогда не было проблемы, которую нужно было решить.

Вы уловили суть.

Итак, как убедиться, что вы правильно обдумываете, прежде чем писать код, и избегать таких ситуаций?

Спланируйте свое решение

Будь то в голове, на салфетке или листе бумаги. Знайте, что вам нужно делать и как вы планируете это делать.

Проверьте свои предположения

Вы уверены, что атрибут hash_t элемента является его уникальным идентификатором? Что с буквой t в конце? Возможно, это результат плохой реализации интерфейса и на самом деле означает хэштег. Если вы можете написать несколько тестов для этого еще лучше.

Одноразового кода не существует

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

Не будь рабом истории

Если вам не повезло, и вам приходится работать над кодом, который страдает от условий, о которых я говорил ранее, будьте непредубеждены. Не замыкайтесь в мыслительном процессе, который ведет к текущему коду, думайте за пределами кода и будьте готовы к рефакторингу, если это необходимо.

Действовать с осторожностью

Осознавайте, что вы делаете, постоянно задавайте себе вопросы и немедленно реагируйте на новые открытия.

Напишите несколько тестов

Это не только поможет вам убедиться, что ваш код выполняет то, для чего он предназначен, но и заставит вас задуматься о своем решении. Если вы каждый раз повторно инициализируете переменную «X» в своих тестовых примерах, но значение действительно постоянное, разве это не должно быть частью реализации? Но если это на самом деле не относится к реализации, разве мы не должны строить это там, где принадлежит «X»? Лучшее из всех? Вам не нужно много думать об этом, если вы делаете что-то не так и пишете для этого тесты, вы это заметите.

Хотя многие вещи довольно широки, их цель очень конкретна. Чтобы посеять в голове мысли о том, что в следующий раз вы обнаружите, что пишете какой-нибудь код, заставлю вас остановиться на минуту и ​​подумать.

P.S. Если вам понравилось читать этот пост и вы хотите, чтобы я написал больше о темах разработки программного обеспечения, дайте мне знать, поставив лайк или поделившись им.