Я часто испытываю трудности с назначением моих методов. Например, теперь у меня есть статический метод, который сравнивает два хэша, и я застрял с его именем. HashesEqual(string h1, string h2)
? AreHashesEqual(string h1, string h2)
? Ваша лучшая версия? Это общий вопрос - у меня таких вещей много. Есть ли авторитетный источник, где я могу прочитать о соглашениях об именах?Методы равенства - соглашение об именах
ответ
Из Names of Type Members на MSDN:
ли давать имена методов, которые являются глаголы или глагольные фразы. Обычно методы действуют на данные, поэтому использование глагола для описания действия метода облегчает разработчикам понимание того, что делает этот метод. При определении действия, выполняемого методом, будьте осторожны, чтобы выбрать имя, которое обеспечивает ясность с точки зрения разработчика. Не выбирайте глагол, который описывает, как метод выполняет то, что он делает; другими словами, не используйте детали реализации для имени вашего метода.
Назовите логические свойства с утвердительной фразой (CanSeek вместо CantSeek). Кроме того, вы можете также префикс Boolean properties с Is, Can или Has, но только там, где он добавляет значение.
Я думаю, что другие согласятся с тем, что любое соглашение об именах является хорошим, если оно имеет смысл, и вы используете его последовательно.
В качестве альтернативы, рассмотреть возможность создания методы расширения для string
класса, который обеспечивает эту функциональность. Тогда вы можете просто сделать:
var equal = h1.EqualsHash(h2); // or similar, based on the naming you choose
Или написать собственный Hash
класс, который держит в хэш-значения внутренне, и переопределение/перегрузить его метод Equals
и ==
/!=
оператор (ы), уступая в этом:
var h1 = new Hash("string1");
var h2 = new Hash("string2");
var equal = h1 == h2;
// or
var equal = h1.Equals(h2);
или сделать свой служебный класс стоять в одиночку (например, HashUtil
или что-то), и держать слово «хэш» из своего метода (ов) полностью:
var equal = HashUtil.AreEqual(h1, h2);
Также см: Guidelines for Names
Итак, в соответствии с частью 2 вашей цитаты, общее имя для моего метода - 'AreHashesEqual', с' Are' в начале, я правильно? – Denis
@Denis: Я думаю, что это было бы приемлемо, да. –
Я бы предложил всем разработчикам читать .NET Design Gudelines (сопряженный это специальный раздел для членов типа). В вашем случае, потому что тип возвращаемого также логическое значение, я рекомендую вам попробовать что-то вроде:
IsHashEqual(string testHash)
И в том случае, когда мой метод имеет два параметра, имя должно быть 'AreHashesEqual', правильно? – Denis
только имя метода предложение предоставляется .Net Framework Guidelines, что методы должны быть
DO дать имена методов, которые являются глаголы или глагольные фразы
Я думаю, что Are
ли можно квалифицировать как «глагольных фраз» и будет работать здесь.
В этом случае, хотя вы не определяете что-то новое, а скорее конкретную форму хорошо установленного шаблона: Equals.Учитывая, что моя склонность будет префикс функции с Равными так, что он показывает близко к Равным в таких функциях, как Intellisense, поиск и т.д. ...
EqualHashes(string p1, string p2)
- 1. Соглашение об именах дескрипторов
- 2. Соглашение об именах xmlns
- 3. Rails, соглашение об именах
- 4. Соглашение об именах Linq2sql
- 5. Неверное соглашение об именах?
- 6. Загрузить соглашение об именах
- 7. Соглашение об именах mysql
- 8. Соглашение об именах таблиц?
- 9. Соглашение об именах IBOutlets
- 10. Соглашение об именах serialVersionUID
- 11. Соглашение об именах коллекции
- 12. Соглашение об именах классов Perl
- 13. Соглашение об именах переменных Python
- 14. Соглашение об именах атрибутов C#
- 15. Android XML Соглашение об именах
- 16. Соглашение об именах внешних ключей
- 17. Предпочитаемое соглашение об именах имен
- 18. Соглашение об именах Python - namedtuples
- 19. php cookie соглашение об именах
- 20. Соглашение об именах для рельсов
- 21. Соглашение об именах имен Javascript
- 22. Соглашение об именах компонентов Swing?
- 23. Соглашение об именах конструкторов C#
- 24. Соглашение об именах, когда случайно ссылается на методы в Java
- 25. Соглашения об именах TSQL ~ Как называется это соглашение об именах?
- 26. Более короткое соглашение об именах для типов
- 27. Профиль/аккаунт Соглашение об именах REST API
- 28. Соглашение об именах параметров конструктора в JavaScript
- 29. Соглашение об именах для общих паттернов?
- 30. Соглашение об именах для базового контроллера
Да, есть авторитетный источник, [MSDN] (http://msdn.microsoft.com/en-us/library/vstudio/ms229045%28v=vs.100%29.aspx). К сожалению, просить сторонние ресурсы, как правило, вне темы для SO. –