The following text is a partial translation of the original English article, performed by ChatGPT (gpt-3.5-turbo) and this Jekyll plugin:
Тема может показаться шуткой, но это не так. Пустая строка, используемая в качестве разделителя инструкций в методе объекта, является симптомом кода. Почему? Вкратце, потому что метод не должен содержать “части”. Метод всегда должен делать одну вещь, а его функциональное разложение должно производиться с помощью языковых конструкций (например, новых методов), а никогда с помощью пустых строк.
Посмотрите на этот класс на Java (он пахнет, не так ли?):
Этот метод сначала загружает содержимое файла. Затем он подсчитывает количество строк, соответствующих предоставленному регулярному выражению. Так почему метод grep
“пахнет”? Потому что он делает две вещи вместо одной - загружает и ищет.
Если мы установим правило, чтобы избегать пустых строк в теле метода, метод придется переработать, чтобы сохранить “разделение ответственностей”, введенное этой пустой строкой:
Я считаю, что очевидно, что у этого нового класса методы намного более связаны и читаемы. Теперь каждый метод делает ровно одну вещь, и легко понять, какую именно.
Эта идея об избегании пустых строк также применима и к другим языкам, а не только к Java/C++/Ruby и т.д. Например, этот CSS-код определенно требует рефакторинга.
Пустая строка здесь говорит нам (фактически кричит нам), что класс .container
слишком сложен и должен быть разделен на два класса:
К сожалению, использование пустых строк для разделения блоков кода является очень распространенной привычкой. Более того, очень часто я вижу пустые блоки из двух или даже трех строк, которые все выполняют эту злую роль разделителя задач.
Само собой разумеется, что правильно спроектированный класс должен иметь всего несколько публичных методов, а правильно спроектированный метод должен содержать до десяти инструкций (по словам Боба Мартина). Пустые строки внутри методов побуждают нас нарушать эту замечательную правило и превращать их в многостраничные поэмы.
Конечно, проще просто несколько раз нажать enter
и продолжить кодировать прямо в том же методе, вместо того чтобы сначала подумать и провести рефакторинг. Эта лень в конечном итоге приведет к коду, который практически невозможно поддерживать.
Чтобы предотвратить это в своих проектах, перестаньте использовать пустые строки внутри методов полностью. Идеально было бы запретить их в автоматизированной сборке. В qulice.com, инструменте статического анализа, который мы используем во всех проектах на Java, мы создали свою собственную проверку Checkstyle, которая запрещает пустые строки в каждом методе.
Translated by ChatGPT gpt-3.5-turbo/42 on 2023-12-27 at 13:30