Re[11]: Порядок параметров в методе (и вообще про порядок членов
От: Sinix  
Дата: 18.04.16 12:01
Оценка:
Здравствуйте, Shmj, Вы писали:

SS>>Сам код проверки можно спрятать под капот класса параметров, вызывать из конструктора основного класса.

S>Это хуже, так как нельзя отличить опциональные параметры от обязательных. Нужно смотреть документацию.

Ну а что мешает спрятать в класс параметров только опции, как в XmlWriterSettings?
Тут сама проблема прям подсказывает решение

S>Лучше так: все обязательные в конструктор, опциональные устанавливаете через свойства. И пофиг что их много -- никто запрет на количество параметров не устанавливал.

Угу, или так.
Re: Порядок параметров в методе (и вообще про порядок членов)
От: Vladek Россия Github
Дата: 18.04.16 13:14
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Вот, задумался.


S>В каком порядке лучше писать параметры в методе? Видимо лучше по смыслу, чем по алфавиту. Но какой лучше принцип применить? По очереди появления в теле метода? По важности (менее важные, опциональные, уже после).


Принято так расставлять: что, где, как.

S>Добавлю. И даже более широкий вопрос. Вот, порядок полей и свойств в классе, порядок методов. Должен ли он быть? Или просто хаотично?


Порядок должен быть.

S>Update. Добавлю пример:


S>
S>class Book
S>{
S>   public string Author {get; set;}
S>   public DateTime PublishDateTime  {get; set;}
S>   public string Name {get; set;}
S>   public long Id {get;set;}
S>   public DateTime PurchaseDateTime {get; set;}
S>   public int AvailableCount {get; set;}
S>   public string Description {get; set}
S>}
S>


S>Не кажется ли вам, что сначала нужно расположить Id, книги, а не в середине. Потом желательно Name. А может Author? Вот как тут понять? А потом что первым AvailableCount или PublishDateTime?


Это зависит от важности этих данных в рамках решаемой задачи: что важнее, то и идёт первым. И идентификаторы у книг уже есть — ISBN — наверное, стоит использовать его.
Re[3]: Порядок параметров в методе (и вообще про порядок членов)
От: Sinatr Германия  
Дата: 18.04.16 13:15
Оценка:
Здравствуйте, Sinix, Вы писали:

Прочитал комент и не понял. Можете обьяснить что имелось в виду:

S>Вот тут обязательно надо читать вот это. Иначе рано или поздно выстрелит.


Если вы про

DO NOT add a parameter in the middle of existing optional parameters
DO NOT add multiple overloads with optional parameters

то как бы и ежу понятно. Или имелось в виду какое-то другое "ружье"?

S>Вообще я удивлён, что нашлась хоть одна схема работы с optional args, которая почти не создаёт проблем с бинарной совместимостью. Все остальные варианты рано или поздно подкладывали очень обидный MissingMethodException.


Без понятия что такое "бинарная совместимость".. что-то из области создания библиотек и позднего связывания? Точно в C#?
---
ПроГLамеры объединяйтесь..
Re[4]: Порядок параметров в методе (и вообще про порядок членов)
От: Sinix  
Дата: 18.04.16 13:51
Оценка:
Здравствуйте, Sinatr, Вы писали:


S>Это как бы и ежу понятно. Или имелось в виду какое-то другое "ружье"?


Не, я про запрет нескольких перегрузок с optional args и про порядок действий при добавлении параметров. Вот этого совета нам в своё время не хватало.


S>>Вообще я удивлён, что нашлась хоть одна схема работы с optional args, которая почти не создаёт проблем с бинарной совместимостью. Все остальные варианты рано или поздно подкладывали очень обидный MissingMethodException.


S>Без понятия что такое "бинарная совместимость".. что-то из области создания библиотек и позднего связывания? Точно в C#?

Это про "заменить библиотеку такой же, только без бага, не перекомпилируя все зависимости".
Для большого софта реально нужная штука.
Re: Порядок параметров в методе (и вообще про порядок членов)
От: Qulac Россия  
Дата: 18.04.16 14:12
Оценка: -1
Здравствуйте, Shmj, Вы писали:

S>Вот, задумался.


S>В каком порядке лучше писать параметры в методе? Видимо лучше по смыслу, чем по алфавиту. Но какой лучше принцип применить? По очереди появления в теле метода? По важности (менее важные, опциональные, уже после).


S>Я старался по важности. Но когда параметров много, сложно отследить их важность.


S>Или вообще без всякого порядка, просто хаотично?


S>Кто что думает?


S>Добавлю. И даже более широкий вопрос. Вот, порядок полей и свойств в классе, порядок методов. Должен ли он быть? Или просто хаотично?


S>Update. Добавлю пример:


S>
S>class Book
S>{
S>   public string Author {get; set;}
S>   public DateTime PublishDateTime  {get; set;}
S>   public string Name {get; set;}
S>   public long Id {get;set;}
S>   public DateTime PurchaseDateTime {get; set;}
S>   public int AvailableCount {get; set;}
S>   public string Description {get; set}
S>}
S>


S>Не кажется ли вам, что сначала нужно расположить Id, книги, а не в середине. Потом желательно Name. А может Author? Вот как тут понять? А потом что первым AvailableCount или PublishDateTime?


Самый общий подход, которым я пользуюсь и который очень давно рекомендовали. Атрибуты класса: от "легких" к "тяжёлым", т.е. сначала bool,int,double затем структуры, потом объектные типы. В параметрах метода наоборот: от "тяжелых" к "легким". Это если нет каких-то других ограничений.
Программа – это мысли спрессованные в код
Re[2]: Порядок параметров в методе (и вообще про порядок членов)
От: Sinix  
Дата: 18.04.16 14:29
Оценка:
Здравствуйте, Qulac, Вы писали:

Q>Самый общий подход, которым я пользуюсь и который очень давно рекомендовали. Атрибуты класса: от "легких" к "тяжёлым", т.е. сначала bool,int,double затем структуры, потом объектные типы. В параметрах метода наоборот: от "тяжелых" к "легким". Это если нет каких-то других ограничений.


bool FileExists { ... }
long Length { ... }
DateTime LastChanged { ... }
string FileName { ... }


Ничего не смущает?

На мой взгляд, подобные рекомендации из серии "ну и что, что неудобно, зато формально проверить легко" скорее мешают, чем помогают.
Re[3]: Порядок параметров в методе (и вообще про порядок членов)
От: Qulac Россия  
Дата: 18.04.16 14:33
Оценка:
Здравствуйте, Sinix, Вы писали:

S>Здравствуйте, Qulac, Вы писали:


Q>>Самый общий подход, которым я пользуюсь и который очень давно рекомендовали. Атрибуты класса: от "легких" к "тяжёлым", т.е. сначала bool,int,double затем структуры, потом объектные типы. В параметрах метода наоборот: от "тяжелых" к "легким". Это если нет каких-то других ограничений.


S>
S>bool FileExists { ... }
S>long Length { ... }
S>DateTime LastChanged { ... }
S>string FileName { ... }
S>


S>Ничего не смущает?


S>На мой взгляд, подобные рекомендации из серии "ну и что, что неудобно, зато формально проверить легко" скорее мешают, чем помогают.


Да нет, это дело привычки. По мне всё норм.
Программа – это мысли спрессованные в код
Re[4]: Порядок параметров в методе (и вообще про порядок членов)
От: Sinix  
Дата: 18.04.16 14:40
Оценка: +1 :)
Здравствуйте, Qulac, Вы писали:

Q>Да нет, это дело привычки. По мне всё норм.


Напомнило
Автор: alexxxander
Дата: 16.10.15
Re[5]: Порядок параметров в методе (и вообще про порядок чле
От: pagid Россия  
Дата: 20.04.16 07:13
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Мне нужна удочка а не рыба. Т.е. принцип, по которому нужно сортировать параметры, а не это отдельное решение.

Ты же сам привел этот пример , значит на его основе был готов делать какие-то выводы. А правильного и единственно верного решения быть не может, и даже если его установить, рыбы от этого больше не поймаешь.
Re[3]: Порядок параметров в методе (и вообще про порядок членов)
От: SergeyT. США http://sergeyteplyakov.blogspot.com/
Дата: 25.04.16 04:11
Оценка:
Здравствуйте, Sinix, Вы писали:

S>Здравствуйте, SergeyT., Вы писали:


ST>>+1. Со мной тоже периодически такое происходит!

S>Оффтоп

S>Можешь глянуть вот этот
Автор: Sinix
Дата: 01.04.16
вопрос? Не ради спора, действительно интересно.


Сейчас отвечу
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.