Являются ли длинные имена переменных / функций своего рода запахом кода?
Имеет длинные имена переменных / функций (corresponding_OneToMany_task_spec
) какой-то кодовый запах? Каков предлагаемый способ упрощения?
2 ответа
Решение
То, что вы показываете в своем примере, не является запахом кода, я думаю, что это хорошо. Если они становятся намного длиннее, может быть запах:
- Возможно, имя функции слишком длинное, потому что у него слишком много обязанностей. В этом случае вам следует рассмотреть возможность его разделения (то же самое относится и к переменным - иногда класс слишком велик и его следует разделить).
- Имя не должно описывать каждую крошечную деталь того, что делает сущность, а должно содержать абстракцию того, что она делает.
- Вы можете сокращать имена, используя сокращения, если вы определяете эти сокращения в своей документации и используете их последовательно во всей базе кода и документации.
Как предположил Бьёрн, я не думаю, что длина здесь является особенно проблемой. Однако несколько вещей, которые вы также можете рассмотреть:
- Добавляет ли имя функции какую-либо полезную информацию (имена параметров и возвращаемые типы могут добавить к описанию функции), т.е.
List
> getCorresponding (Task task) может быть таким же значимым, какcorresponding_OneToMany_task_spec
- Читаемость кода. Если длина имени действительно ухудшает читабельность вашего кода, вы должны рассмотреть другие имена или сокращения.
Длинные имена методов могут быть признаком недостаточного вложения / атомизации. Особенно, если их несколько.
plant.tree_leaf_smell
plant.tree_leaf_color
Во многих случаях следует разбить иерархически.
plant.tree.leaf.smell
plant.tree.leaf.color
и тогда вы можете охватить большие части для
leaf.smell
leaf.color