Re[4]: что нельзя делать никогда
От: vnp  
Дата: 18.12.13 08:56
Оценка:
Здравствуйте, мыщъх, Вы писали:

М>и где там определение? например, делим длину на два. нужно ли писать

М>#define half 2

боже упаси. #define оторвет руки сам, без нашего участия.

М>или можно писать /2 ?

M>или вот... for (idx=0;idx<len;idx++) это нормально? или неявный 1 нужно заменить на one, 0 -- start_index, len -- end_index

А вот так низзя. Семантика for менялась как минимум 6 раз. Единственно кошерный способ это while (idx < len). Смайликов не ставлю из принципа.

М>вы же не можете не признать, что end_index это лучше? for (idx=start_index;idx==end_index;idx+=one), где end_index = len — one, правда, тут нужно еще предусмотреть случай когда len == 0, где 0 определен как empty_xxx (вместо ххх -- название сущности).


Еще кошернее, while (begin != end). Ну, вы поняли.

М>так все-таки где граница магичности? а как на счет магических алгоритмов? смотрите в программу и видите в ней 1 + х и думаете, что это наверное ошибка, т.к. тут должно быть е**х, но программа работает. почему? вопрос в самом деле интересный, т.к. при копи-пасте она проработает недолго и быстро сломается. если х это не аргумент функции и если х удовлетворяет определенным условиям неизвестным вам, то оно... работает. причем очень шустро. допустим, функция не может возвращать ошибку и не имеет права кидать исключений, а х -- вычисляется в рантайме -- тут ведь даже проверку на соответствие этим условиям не вставишь...


А вот такого я не встречал. Пример можно?

М>а вот еще. написано -- (k + 4)/10. оно заменяет кучу ресурсоемких вычислений и выдает удивительно точный результат, который долго пытались объяснить аналитическим путем, выдвинули несколько гипотез почему оно работает, но потом плюнул и забили болт. работает -- и ладно. для k == 8 не работает. но k никогда не равно 8, т.к. не соответствует никакой физической реальности, но работает для 7 и 9. даже для -1 работает. во. а теперь скажите мне -- что оно считает. а оно определенно что-то считает.


Выдыхай... что-нибудь соответствующее какой-нибудь физической реальности, желательно.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.