Изучая всевозможные системы, я обнаружил, что у многих возникают проблемы с именованием методов.
Это побудило меня написать статью.
Что побудило меня написать статью?
После того, как я в тысячный раз обратился к руководству, чтобы узнать порядок аргументов в функции PHP str_replace , стало ясно, что проблема очень актуальна.В конце концов, имя функции «str_replace» только говорит нам, что она делает, но ничего не говорит нам об аргументах.
Что это значит? Ладно, вы можете запомнить количество и порядок аргументов во встроенной библиотеке, но в собственной разработке запомнить аргументы не так-то просто.
Да, есть среды разработки, которые дают нам подсказки, но они не работают при наведении курсора на функцию, поэтому читать такой код сложно.
Но важно, чтобы код легко читался и понимался без комментариев.
Это признак качественного кода.
В качестве примера многочисленных ошибок приведу PHP. Могу сразу назвать несколько ошибок: 1. Названия некоторых функций не совсем четко передают их назначение.
Например, базовое имя .
2. Имена функций составлены по разному принципу.
Например, строковые функции начинаются с ул_ , но не все (например, стрстр , стрпос ).
Та же проблема с файлами: размер файла против Файл существует .
3. Неочевидность аргументов и их порядок в функциях.
Например, строка поиска в функции str_replace стоит на последнем месте, а в функции стрпос - во-первых ( str_replace($search, $replace, $subject[, $&count]) против strpos($haystack, $needle[, $offset]) ).
Если бы искомая строка, например, всегда занимала первую позицию, это было бы удобнее.
Да, это наследие Си Цзиньпина (и не только), но неважно: проблема есть проблема.
Ага
Это значит, что вам нужно придумать имена методов/функций так, чтобы: 1. Название функции/метода четко передавало ее назначение.2. Имена функций/методов следуют одному и тому же принципу/стандарту.
3. Порядок и список аргументов в функциях/методах составлялись по тому же принципу и объединялись с именем.
4. Методы остаются методами.
Поясню четвертый пункт. Я часто вижу строки вроде object.Pi(): этот метод не имеет ничего общего с объектом.
Это скорее функция (или константа).
Примеры и многое другое
1. Нам нужно заменить подстроку в строке.Самый очевидный вариант: string.replace(from, to).
Жаль, что на PHP это невозможно.
2. Намекаем на аргументы и смысл: groups.getByName(name).
Ничего лишнего.
Нет необходимости писать getGroupByName, потому что контекст понятен благодаря группам.
Аналогично другие методы: groups.remove(группа) или группа.
удалить() .
Ага! И тут интересный момент :) Если удалить из коллекции, то коллекция.
удалить(элемент) .
А если элемент удалит сам себя, то элемент.удалить() .
И это важно: наш код должен быть валидным с точки зрения английского языка.
3. Антонимы в названиях функций/методов.
Да, при именовании всегда следует использовать правильные антонимы.
Добавляйте и удаляйте элементы в коллекции: add/remove. Создаем и удаляем объекты: создаем/удаляем.
Мы начинаем и завершаем процесс: начало/конец, начало/окончание (но не начало/окончание и начало/окончание).
4. Логические возвращаемые значения.
Да-да-да, и на это следует намекнуть, чтобы код легко читался.
Такие слова, как: has, is, was, в начале имени метода намекают нам, что этот метод возвращает логическое значение.
Пример: объект.hasData() .
Спасибо крозов для напоминания.
5. Намекаем на порядок аргументов в методе: cars.getByMonthAndYear(месяц, год) .
6. Образование имени.
Имя метода — это своего рода предложение, которое обязательно состоит из предиката ( ввод.фокус() ), но может содержать дополнения ( элемент.appendChild() ), определения ( окно.
slowlyShow() ) и их комбинации ( todo.getNewTask() ).
Но правило часто нарушается.
Например, user.next().
Да.
были ли подобные ситуации? Эта проблема присуща языкам программирования, не имеющим свойств.
Да, с такими названиями придется мириться.
Хорошо это или плохо – решать вам.
Общий
Надеюсь, эта статья была вам полезна.Хочу больше? Затем сходите в книжный магазин и купите книгу Стива МакКоннелла «Идеальный код».
Теги: #программирование #методы #функции #разработка сайтов
-
Контраст Между N8 И N9
19 Oct, 24 -
Интервью С Илоном Маском
19 Oct, 24 -
Создайте Аудио Слайд-Шоу С Помощью Jplayer
19 Oct, 24 -
Большой Калькулятор Выходит Из-Под Контроля
19 Oct, 24