2014-07-08 3 views
0

При работе с asp.net mvc мы увидим, что существует множество методов с именем «For», например Html.EditorFor(...), Html.TextBoxFor(...) и т. Д. Эти имена очень интуитивно понятны, и мне они нравятся.. Именование метода .NET: когда использовать XXXFor и когда использовать GetXXX

Мой вопрос есть, когда следует использовать GetXXX(...) и когда использовать XXXFor(...)? Кажется, что даже в тех же рамках именование таких методов все еще несовместимо. Иногда используется GetXXX(...), тогда как используется XXXFor(...). Есть ли какой-то принцип именования?

BTW:

Мне любопытно, это потому, что я пишу класс под названием EntityKey. Я хочу поставить два статических метода в этом классе. Это EntityKey.Get(object entity) и EntityKey.GetKeyProperties(Type entityType). Но я подумываю переименовать метод Get в For, поэтому EntityKey.For(object entity). Если я переименовал Get в For, я думаю, что лучше также переименовать GetKeyProperties в KeyPropertiesFor. Как вы думаете?

+0

Этот вопрос зависит от языка, не могли бы вы указать теги –

+0

Спасибо. Я добавил языковые теги. Я думал, что предложенные теги будут автоматически добавлены, мои плохие :( –

+0

Вопросы стиля кодирования обычно полностью основаны на мнениях ... Проверьте существующие ресурсы, такие как http://en.wikipedia.org/wiki/Fluent_interface и [.Net рекомендации для имен ] (http://msdn.microsoft.com/en-us/library/vstudio/ms229002%28v=vs.100%29.aspx), чтобы повлиять на ваше мнение так или иначе. –

ответ

1

В MVC методы xxxFor - это не просто соглашение об именах. Этот суффикс указывает на то, что метод работает по свойству модели.

Html.TextBoxFor(m => m.FirstName); 

против

Html.TextBox("FirstName", @Model.FirstName); 

Следует также отметить, что это не "C# методы". Это методы .NET, входящие в состав ASP.NET MVC. Они называются точно так же, если вы используете VB.NET.

+0

Это сравнение имеет смысл. Спасибо: P. Извините, это должно быть «.NET Methods». –

2

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

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

public static int GetKey(this object entity) 
{ 
    .... 
} 

Тогда вы можете просто позвонить

someEntity.GetKey(); 

Вы могли бы взять его на шаг дальше и все ваши лиц наследуют от общего интерфейса и изменить свой метод расширения на что-то вроде:

public static int GetKey(this IEntity entity) 
{ 
    ... 
} 

Возможно, я неправильно понимаю, что вы извлекаете, но если это какие-то данные или метаданные об определенном объекте, вызов метода на объекте, который является источник данных, как правило, читается яснее для меня.

+0

Имеют смысл.Спасибо :) Но ответ Джона Сондерса дает хорошее сравнение, которое показывает ключевое различие между двумя методами именования. Поэтому я принимаю его ответ. –

Смежные вопросы