#c_sharp #net #code_style
using DAO.Operations; namespace BBL.Operations { public class OperationService { public Operation Get(int id) {} public IEnumerableGetAll() {} public void Add(Operation operation) {} //или public Operation GetOperation(int id) {} public IEnumerable GetOperations() {} public void AddOperation(Operation operation) {} } } Как принято называть методы/функции? Какие рекомендации существуют на сей счет? UPD: В приведенном мной примере я указал противоречивые конструкции: короткая форма Get() против более полной GetOperations() мне хочется понять в каких случаях правильней использовать тот или иной способ, какие плюсы/минусы меня могут возникнуть позднее.
Ответы
Ответ 1
Я бы выбрал первый вариант. Потому что второй вариант предполагает некоторое дублирование и лишнюю писанину: var operationService = new OperationService(); var all = operationService.GetOperations(); в сравнении с var operationService = new OperationService(); var all = operationService.GetAll(); Если вы правильно называете переменные, то кратких вариантов достаточно.Ответ 2
Существует Framework Design Guidelines - набор правил для создания библиотек, которые будут расширять .NET Framework и взаимодействовать с ним. В частности там написано, что для методов надо использовать PascalCase public class Object { public virtual string ToString(); } Что касается Get или GetOperation - никакие соглашения о стиле кодирования такого не регламентируют, и выбор зависит исключительно от предпочтений автора кода. В том числе может быть public Operation Get(int id) {} public IEnumerableGet() {} т.к. язык позволяет перегрузку функций. Ответ 3
Очевидные методы лучше называть проще. Т.е. методы get\set\add\clear - проще так и именовать. Другое дело, если ваш add внутри выбирает по какой то сложно логике что ему делать. Тогда лучше явно писать: AddOperationWhen(?) GetWithoutRights() или GetAsAdmin() или даже иногда лучше GetOperationsAsAdmin()Ответ 4
Второй лучше. Объясню на примере: Operation NextMove = new Operation(); /* ... Много... много строк кода */ NextMove.Get(n); //or NextMove.GetOperation(n); Конечно среда вам "подставит плечико", но..., лучше ходить ногами, а не на костылях. Исключение, будет тот случай интерфейса, так интерфейс предполагает, наследование его множеством классов. Вообще, если вы что либо можете указать явно - укажите. P.S. Название GetOperations(), я бы заменил на GetOperationsAll()
Комментариев нет:
Отправить комментарий