Я был в шоке, когда понял, от чего возник баг

Непонятный код

Недавно, я исправлял один баг связанный с тем, что человек мог скачивать файл, когда у него не было на это прав. Я довольно долго пытался разобраться в чём дело, код старый, тестов нет, форматирования по стайлгайду нет. Дело было вечером, и я решил отложить решение проблемы до утра.

Двойные отрицания в коде

Проснувшись утром, выпив чашку кофе, я вернулся к этому чудо-коду, расставив брейкпоинты, я стал исполнять код по шагам. И вскоре я нашёл ошибку в логике. Проблема была в следующем коде:

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

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

 


Also published on Medium.

Добавить комментарий