Соглашение об именовании методов - PullRequest
1 голос
/ 02 октября 2010

Если метод принимает класс / структуру в качестве входного параметра, как лучше назвать его?

Пример :

class Person{}
class Address{}

class Utility{
  //name **style 1** - use method overloading
  public void Save(Person p){}
  public void Save(Address a){}

  *//name **style 2** - use unique names that define what they are doing
  //or  public void SavePerson(Person p){}
  //and public void SaveAddress(Address a){}*
}

Я личнокак стиль 1 (используйте функции языка - в этом случае перегрузка).Если вам нравится стиль 1, можете ли вы указать мне какую-либо «официальную» документацию, в которой говорится, что это стандарт?

Ответы [ 3 ]

3 голосов
/ 02 октября 2010

Я бы сказал, что ваша задача не в именовании методов, а в дизайне шрифтов. Тип, отвечающий за сохранение как Person объектов, так и Address объектов, выглядит как тип с более чем одной ответственностью . Такой тип будет иметь тенденцию расти, расти и расти, и в конечном итоге его будет сложно поддерживать. Если вместо этого вы создадите более специализированные типы, именование методов может автоматически стать более простой задачей.

Если вы все еще хотите собрать эти методы в одном типе, это в основном вопрос стиля. Возможно, стоит подумать о том, может ли этот тип использоваться кодом, написанным на другом языке, и это не поддерживает перегрузку методов. В таких случаях длинные имена - это путь. В противном случае просто придерживайтесь того, что чувствует себя лучше (или какова будет действующая конвенция на вашем рабочем месте).

2 голосов
/ 02 октября 2010

Это вопрос стиля.

Если вам не нравятся длинные имена методов, переходите к 1.

Если вам не нравятся длинные списки перегрузки, переходите к 2.

Важным моментом является поддержание согласованности, поэтому не смешивайте два стиля в одном проекте.

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

0 голосов
/ 02 октября 2010

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

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

Также стоит спросить, можно ли использовать полиморфизм вместо перегрузки.

...