Информация об изменениях

Сообщение Re[3]: А отрефакторю-ка я сейчас всё. Mемуар. от 19.05.2015 10:06

Изменено 19.05.2015 10:08 VTT

Здравствуйте, мыщъх, Вы писали:

М>выход за границы буфера это такой протокол общения кода с аллокатором


простреливание ноги это такой повод сходить к врачу


Это очень показательный пример. Показательный в том плане, что не стоит пренебрегать выразительной силой языка.
На самом деле можно было начать просто с изложения причин использования такого подхода. Такая каша же не просто так заварилась?
А если жизненную необходимо прыгать за границу массива для "общения" с аллокатором не удается внятно объяснить в письменной форме другим людям, то это явный повод не говнокодить.
То, что С обделен многими плюшками и сахарком других языков, вовсе не принуждает писать на нем нечитаемый код. Тут можно вспомнить про невидимые файлы с точкой в начале. Какому-то байтогрызику было лень написать пару функций типа Path_Is_FolderSelfAlias(), и он написал просто if(p[0] = '.'). Затем, заметив баг, он переписал if(p[0] == '.') и чувством выполненного долга пошел в бар. Суть не в том, что в результате получился лаконичный способ помечать файлы как скрытые, а том, что кто-то пренебрег ясным изложением смысла этого сравнения, которое на самом деле должно было определять, показывать файл или нет путем извлечения признака принадлежности к скрытым объектам, котором по случайности оказалась проверка первого байта на равенство с '.'. В данном случае ему повезло, но обычно такие фокусы кончаются плохо.
Так что по мне подобное срезание углов на ровном месте — просто признак лени и некомпетентности. Я вполне уверен что и в данном случае можно было все четко запрограммировать и не доводить людей до инфаркта.
Еще интересно, как там различался ошибочный выход за границы массива от целенаправленного?
Re[3]: А отрефакторю-ка я сейчас всё. Mемуар.
Здравствуйте, мыщъх, Вы писали:

М>выход за границы буфера это такой протокол общения кода с аллокатором


простреливание ноги это такой повод сходить к врачу


Это очень показательный пример. Показательный в том плане, что не стоит пренебрегать выразительной силой языка.
На самом деле можно было начать просто с изложения причин использования такого подхода. Такая каша же не просто так заварилась?
А если жизненную необходимость прыгать за границу массива для "общения" с аллокатором не удается внятно объяснить в письменной форме другим людям, то это явный повод не говнокодить.
То, что С обделен многими плюшками и сахарком других языков, вовсе не принуждает писать на нем нечитаемый код. Тут можно вспомнить про невидимые файлы с точкой в начале. Какому-то байтогрызику было лень написать пару функций типа Path_Is_FolderSelfAlias(), и он написал просто if(p[0] = '.'). Затем, заметив баг, он переписал if(p[0] == '.') и чувством выполненного долга пошел в бар. Суть не в том, что в результате получился лаконичный способ помечать файлы как скрытые, а том, что кто-то пренебрег ясным изложением смысла этого сравнения, которое на самом деле должно было определять, показывать файл или нет путем извлечения признака принадлежности к скрытым объектам, котором по случайности оказалась проверка первого байта на равенство с '.'. В данном случае ему повезло, но обычно такие фокусы кончаются плохо.
Так что по мне подобное срезание углов на ровном месте — просто признак лени и некомпетентности. Я вполне уверен, что и в данном случае можно было все четко запрограммировать и не доводить людей до инфаркта.
Еще интересно, как там различался ошибочный выход за границы массива от целенаправленного?