| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Общие вопросы по .NET и C# > Вопрос о правильном написании кода |
| Автор: ДобренькийПапаша 24.6.2011, 09:41 | ||||
| Вот программирую (кодирую Приведу пример. Есть такой класс с таким методом:
Правильно ли так вызывать метод? Нужно ли передавать период срабатывания таймера в метод SetTimer (ну и изменить сигнатуру метода в соответствии)? То есть:
Это не лучший пример, но вопрос сводится к тому, что - стоит ли передавать в методы аргументами всё то, что может быть настраиваемо (возможно, настраиваемо в будущем, может сейчас в этом и нет нужды)? Разве не проще ли так будет писать юнит-тестирование этих методов? (Ну можно представить себе более подходящий пример, вместо того, который я привёл). |
| Автор: jonie 24.6.2011, 10:03 | ||||
есть мнение что это плохой код для релиза |
| Автор: ДобренькийПапаша 24.6.2011, 10:07 |
А если ответить немного поразвёрнутей? |
| Автор: jonie 24.6.2011, 11:02 |
| ДобренькийПапаша, ну я не уверен насчет внутреннего устройства именно того таймера, а вот насчет System.Threading.Timer вполне уверен http://habrahabr.ru/blogs/net/108815/ |
| Автор: ДобренькийПапаша 24.6.2011, 18:30 |
| Ну дело не в таймере. Вопрос в целом интересует. |
| Автор: desevg 27.6.2011, 09:49 | ||||
| Тут, как Вы и предполагаете, все зависит от интерфейса, который требуется классу для взаимодействие с окружающей его системой. Формальные параметры стоит добавлять в метод, когда их значения могут быть перемены и они на прямую влияют на код внутри метода. В вашем случае можно сделать параметром не только кол сек, но и callback функцию, если того требует интерфейс. С другой стороны, Ваш метод имеет доступ private, и тут проще определить его параметры, так как они зависят от интерфейса внутри класса, т.е. данный интерфейс будет определяться нуждами методов самого класса, что дает больше возможностей для модификации. Так же не стоит забывать о перегрузке методов. Ни кто не заставляет Вас ограничиваться одним методом, можно сделать:
и тд. Можете инкапсулировать настройке в типе, удобно при объединении группы связных данных
в общем подходов много, все от ситуации зависит. |