Плохие имена переменных или методов с Only - Признак плохого кода #5


3 0

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

Классическое имя ReadOnly. Почему Only? Почему нельзя просто назвать Read? В ОС Windows есть такой атрибут ReadOnly, который как бы переопределяет любые права на запись и говорит, что теперь из файла можно только читать. Теоретически это выглядит красиво, но начинаются проблемы, когда мы хотим кому-то дать права на запись. С одной стороны, вроде бы стоит Only флаг на чтение, а с другой стороны мы хотим дать запись. Странно и непонятно. Ну ладно, это ОС и UI. Я хоть и не согласен с этим именем, все уже смирились с этим. 

С точки зрения кода если вы видите в имени Only, то скорей всего к нему привязан плохой код с перевернутой логикой, который в концов приведет к костылям и грязи. 

Если нужен флаг ReadOnly, то назовите его просто Read. Если нет других флагов, то это очевидно, что стоит только Read. 

Я столкнулся на работе с ситуацией, когда реализована логика BusinessEmailOnly. И вот Only перезаписывает все и делает его плохо масштабируемым. Если бы переменная была BusinessEmail, то реализация была бы проще и более гибкая. 

Просто сейчас появились флаги VerifiedEmail и может появиться AlertEmail. Красивая реализация - иметь три флага BusinessEmail, VerifiedEmail, AlertEmail, все четко, все работает и можно делать из этих флагов вариации, которые сделают реализацию очень гибкой. 

Но у нас реализовано BusinessEmailOnly, VerifiedEmail и возможно будет AlertEmail. В таком случае что будет означать BusinessEmailOnly плюс VerifiedEmail? Даже звучит не логично. 

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


Понравилось? Кликни Лайк, чтобы я знал, какой контент более интересен читателям. Заметку пока еще никто не лайкал и ты можешь быть первым


Комментарии

Jeka Sylar

27 Октября 2020

Миша я там донат кинул на Профиль плюс посмотри пришел ли он


Michael Flenov

27 Октября 2020

Спасибо, видел и продлил доступ


Eugene

30 Января 2021

Конечно, лучше бы некоторые моменты показать на примерах, но, всё равно, спасибо!


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

Еще что-нибудь

Хотите найти еще что-то интересное почитать? Можно попробовать отфильтровать заметки на блоге по категориям.

О блоге

Программист, автор нескольких книг серии глазами хакера и просто блогер. Интересуюсь безопасностью, хотя хакером себя не считаю

Обратная связь

Без проблем вступаю в неразборчивые разговоры по e-mail. Стараюсь отвечать на письма всех читателей вне зависимости от страны проживания, вероисповедания, на русском или английском языке.

Пишите мне