Re[16]: Оцените код
От: LordMAD Россия  
Дата: 10.09.08 15:54
Оценка:
Здравствуйте, slavo, Вы писали:

LMA>>Я просто хочу понять: где Вы видите ту грань между какой-то-признак-ошибки-для-отладки и магическое-число-1 ? Оба имени ничего полезного, по сути, не сообщают, но первое имя Вам не нравится, а второе — нравится.


S>имя какой-то-признак-ошибки-для-отладки говорит хоть что-то, имя MAGIC_NUMBER_1 вообще ничего не говорит


А кому нужно имя, которое "говорит хоть что-то"? Вы либо понимаете для чего константа (и в этом случае, можете тестировать, править и т.д. код), либо не понимаете. В последнем случае, Вы будете гарантированно тратить время на то, чтобы разбираться в этом. И Вам такое имя нравится, как Вы писали выше! Вы начали эту ветку с того, что привели пример плохого, как Вам кажется, кода, насколько я понимаю. Вы сами можете видеть по сообщениям в этой ветке, сколько людей сразу поняли назначение констант, и Вы после этого считаете, что имя какой-то-признак-ошибки-для-отладки было бы более понятным вариантом? То есть пусть лучше всем назначение константы будет не понятно (лишь намек в имени такой константы — типа куда копать), чем лишь некоторым оно будет понятно, а другим не понятно и без намеков?

S> и может конфликтовать или быть похожим на другое аналогичное имя для другого значения.


Вы считаете, что имя DEBUG_ERROR_MARK не может конфликтовать или быть похожим на другое имя?

Кстати, интересно, если DEBUG_ERROR_MARK == 0xfdfdfdfd, то какое имя будет для 0xcccccccc ?

S>Еще аргумент в пользу именования (дефайнами или константами) таких значений — это то, что наткнувшись в коде на подобное имя, можно посмотреть, где оно объявлено и там же, в одном месте на весь проект, прочитать к этому имени подробное описание на человеческом языке.

S>В мелких проектах это может быть и не так важно, но это очень удобно и правильно, когда над громадным проектом работают десятки людей и часто приходят новые люди, либо разным людям приходится читать чужой код. Если такая культура именования всяких констант и их подробное описание будет соблюдаться, то новичку будет легче соориентироваться в проекте, кроме того, он будет вынужден соблюдать эту культуру и не засорять код магическими числами, чистота кода будет выше. И если кто-то знает о смысле значения, например, 0xfdfdfdfd, то сделав его дефайном или константой, и описав это значение в месте объявления дефайна, он сэкономит очень много времени тем, кто по каким-то причинам еще не знает о смысле этого значения. И тем самым сделает доброе дело своим сотрудникам. И они ему еще спасибо скажут.

Проблема в том, что в данном конкретном случае, именование константы не сделает код читабельнее для всех — оно сделает код читабельнее для одних и менее читабельным для других.

S>Далее, если в какой-то момент вы захотите сменить значение константы, то вы сможете это сделать в одном месте. Даже если это значение всем известное и как-будто бы никогда не меняющееся, может возникнуть необходимость сменить значение ради какого-то эксперимента.


Про то, как Вы планируете сказать MS VS, чтобы оно писало в память не эти константы, а другие, потому что в if Вы будете сравнивать его с другим значением — пожалуйста поподробнее. Ваши доводы, возможно, имели бы смысл, если бы в коде эти значения использовались бы несколько раз.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.