Являются ли длинные имена переменных / функций своего рода запахом кода?

Имеет длинные имена переменных / функций (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
Другие вопросы по тегам