Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[98.84.18.52] |
|
Сообщ.
#1
,
|
|
|
Мне уже давно не нравилось то, что в выражениях типа:
if ( max < a ) max = a; приходится писать max и a по два раза. Хорошо, если имена короткие, а то бывает и такое: if ( tralalatralala < trapapatrapapa ) tralalatralala = trapapatrapapa; А вот где-то два года назад я сделал такие шаблоны: template<class T> inline bool _mina ( T & i1, const T & i2 ) { return i1 > i2 ? i1 = i2, true : false; } template<class T> inline bool _maxa ( T & i1, const T & i2 ) { return i1 < i2 ? i1 = i2, true : false; } Теперь пишу так: // Раньше if ( max < a ) max = a; // Теперь _maxa ( max, a ); // Раньше if ( max < a ) max = a, im = i; // Теперь if ( _maxa ( max, a ) ) im = i; Кроме того можно использовать выражения. Например: if ( _maxa ( max, sin ( a + b ) / c ) ) im = i; Я пишу на С++, но подобные вещи можно сделать и в других языках, где есть шаблоны. |
Сообщ.
#2
,
|
|
|
А если надо бОльшее из значений положить в третью переменную? Ещё одну шаблонину будешь делать? А если надо выбрать бОльшее из трёх переменных? А если по абсолютному значению? Утонешь ты там в своих шаблонах. А заодно никто, кроме тебя, не сможет полученный код нормально сопровождать.
Цитата prografix @ подобные вещи можно сделать и в других языках, где есть шаблоны. В SQL вот никаких шаблонов и в помине нет. Но во многих диалектах есть функции GREATEST/LEAST. А написать явно, куда присваивать результат - несложно, рук не оборвёт. |
Сообщ.
#3
,
|
|
|
У этой темы сейчас почти 200 просмотров. Интересно, кто-нибудь воспользовался этими шаблонами?
|
Сообщ.
#4
,
|
|
|
Цитата prografix @ У этой темы сейчас почти 200 просмотров. Интересно, кто-нибудь воспользовался этими шаблонами? Честно говоря, без обид тока - такого в коде видеть не хочется! Усложнение чтения кода просто на пустом месте, чисто мое ИМХО. Я понимаю, когда сложную логику закидывают "под капот". Там это действительно оправдано. |