Руководство по именованию Java (присвоение имен определенному типу класса - не соглашения) - PullRequest
0 голосов
/ 13 июня 2018

(Это не имеет ничего общего с соглашениями Java)

Я ищу руководство, которое поможет мне понять, как называть классы, которые функционируют определенным образом.

Я посмотрелонлайн и читайте на разных сайтах об этом;но все, что я узнал, это то, что не надо делать.т.е. нижний регистр / тире / знаки доллара.

Но я действительно хочу знать, как назвать классы, подобные этим:

(просматривая похожие проекты, я вижу, что люди назвали его "Модуль"") В этом примере я буду называть их" Function ".

public class HouseButtonsFunction extends ButtonSwitchFunction{

@Override 
public void interact(Person p, Object...args){
    //if person turns a light switch or open-garage switch
}

}


public class CarButtonsFunction extends ButtonSwitchFunction{

@Override 
public void interact(Person p, Object...args){
    //if person turns on ignition or roof lights
}

}

Существуют также суперклассы, такие как

PersonInteractionFunction

, которые будут иметь дело с такими вещами, как:

PersonWalkingFunction extends PersonInteractionFunction
PersonSittingDownFunction extends PersonInteractionFunction
PersonDrivingFunction extends PersonInteractionFunction

Значит ли здесь слово «функция» как правильное слово?

Где найти правильную номенклатуру?

Ответы [ 5 ]

0 голосов
/ 13 июня 2018

Не существует жесткого правила, как многие отмечали в комментариях.Соглашение об именах является наилучшей практикой, поэтому, когда все разработчики следуют определенному стандарту именования, они могут легко соотносить и эффективно понимать код, в противном случае это сложная задача для построения отношений.

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

В вышеупомянутом случае я бы предложил что-то вроде этого ..

HouseButtonsFunction => House или HouseBotton

ButtonSwitchFunction => Switch или SwitchBotton

CarButtonsFunction => CarButton

PersonWalkingFunction => Walker

PersonSittingDownFunction => Sitter

PersonDrivingFunction => Драйвер и т. Д.

Обратите внимание, что этовсе зависит от соглашения об именах, которое вы соблюдаете ..

0 голосов
/ 13 июня 2018

В идеале имя класса должно быть существительным, которое является конкретным и легко понятным для того, кто читает код.Завершение имени класса с помощью «Function» - это хорошо, учитывая, что суперкласс, кажется, тоже называется Function.Но если вы можете переименовать суперкласс, я бы назвал их оканчивающимися на Handler.Как

  • PersonWalkingHandler
  • PersonSittingDownHandler
  • PersonDrivingHandler

и т. Д.

0 голосов
/ 13 июня 2018

Нет правил / соглашений о том, как назвать ваш класс и методы.Вы должны следовать здравому смыслу: Назовите вещи в явном виде, чтобы вы и другие могли понять, что это такое и для чего это нужно

Например, для случая кнопки в доме:функция, которая взаимодействует с этой кнопкой.Вы можете думать о разных допустимых именах.Класс может быть назван HouseButtonFunction или HouseButtonAction и т. Д. И метод может быть назван interact() или action() и т. Д. Разница зависит от того, что именно делает ваш метод.Если это что-то переключает, используйте toggle(). Используйте тот, который вы считаете наиболее понятным и наиболее явным. В вашем случае, лично, поскольку ваш класс определяет взаимодействие этой кнопки, я бы предложил назвать ее HouseButtonInteraction

В любом случае, я настоятельно рекомендую комментировать ваши материалы, чтобы больше не было путаницы.

/**
 * This method is called when a person interact with the House button.
 * This method will action the given object
 * @param p : the person that interact with the house button
 * @param o : the object to action
 */
public void interact(Person p, Object o) { ... }

Также старайтесь всегда быть последовательными в названии.т.е. если для кнопки дома вы называете класс HouseButtonFunction и метод interact.Не меняйте название кнопки автомобиля:

//not to do !!
class : CarButtonAction
method : actionObject()
//To do
class : CarButtonFunction
method : interact()
0 голосов
/ 13 июня 2018

Я предлагаю вам прочитать классический самый известный документ, который был написан о именовании, который называется «Правила Оттингера для именования переменных и классов».Он был написан Тимом Оттингером еще в 1997 году и по-прежнему актуален, как он был написан сегодня.

Я бы также предложил вам прочитать книги Чистый код , написанные Робертом К. Мартином (Дядя Боб) и Шаблоны реализации , написанные Кентом Беком

0 голосов
/ 13 июня 2018

Я бы не использовал здесь ни «Модуль», ни «Функцию».

«Модуль» связан с хранилищем.Например, это может быть класс, который содержит коллекцию или собирает информацию о классах, которые можно логически сгруппировать.

«Функция» - это средство для преобразования чего-либо в нечто другое.Например, Function<Person, Rabbit> превращает человека в кролика.

Я бы пошел со словом «Действие», поскольку вы определили один метод interact.

...