LINUX.ORG.RU

[C] наименование переменных в программе

 


0

0

Как принято или лучше именовать переменные в C программе. Про нотации знаю, но тут немного особый случай.

У программы есть конфигурационный файл, в котором опции достаточно длинные, т.к. хотелось бы, чтобы они были "говорящими" для непосвященного пользователя. Например:
output_float_as_double="yes"
output_file="~/calculations.bin"
use_mmx="yes"
use_sse3="yes"

Внутри исходников, я считаю, будет лучше, если названия опций конфигурационного файла будут хотя бы частично соответствовать именам переменных.

Соответственно, для примера сверху придумал несколько вариантов (все опции конфигурационного файла загружаются в структуру pconf):

Вариант 1 (длинный)
pconf.output_float_as_double
pconf.output_file
pconf.use_mmx
pconf.use_sse3

Вариант 2 (длинный 2)
pconf.outputfloatasdouble
pconf.outputfile
pconf.usemmx
pconf.usesse3


Вариант 3 (укороченный логически)
pconf.floatasdouble
pconf.output
pconf.usemmx
pconf.usesse3

Вариант 4 (краткий и непонятный)
pconf.OFAD
pconf.OF
pconf.Ummx
pconf.Usse3

Вариант 5 (микс)
pconf.O_float_as_double
pconf.output_file
pconf.use_mmx
pconf.use_sse3

Вариант 6 (ближе к нотациям)
pconf.OFloatAsDouble
pconf.OFile
pconf.UseMMX
pconf.UseSSE3

Собственно вопрос в том, как лучше именовать переменные, какой вариант лучше или какая часть какого варианта лучше? Мне больше нравятся 2, 3 и 6.

anonymous

Говорил до этого, повторю и сейчас. Не пытайтесь экономить на буквах. Представьте что вы видите этот код в первый раз и не должны тратить время на разгадку этой наскальной живописи. Что значит буква О, а что буква А. Код должен читаться как книга. Неважно сколько он будет занимать килобайт и сколько времени понадобится для наборы пальцами лишних букв на клавиатуре.

Из приведённых годится только Вариант 1.

Dendy ★★★★★
()
Ответ на: комментарий от Dendy

Да, кстати... По собственному опыту знаю что если задаётся подобный вопрос, то его автор уже расставил приоритеты и с определённой вероятностью таки сделает по-своему. В этом случае могу только посоветовать отбросить собственное "кажется" и "хочу" и написать код через силу в стиле Вариант 1. Считайте что это труд, который нужно выполнить. Если через время покажется что таки этот вариант оказался неудачным... что ж, по крайней мере у вас будет с чем сравнить.

Dendy ★★★★★
()
Ответ на: комментарий от Dendy

> Считайте что это труд, который нужно выполнить.

Что-то не вижу особого труда. Можно замутить перловый скрипт в 3 строчки, который сгенерит читалку-писалку такой структуры в-из конфига.

www_linux_org_ru ★★★★★
()
Ответ на: комментарий от www_linux_org_ru

а насчет варианта -- соглашусь с 1, т.к. любая трансляция, кроме тривиальной, усложняет жизнь

www_linux_org_ru ★★★★★
()

Конечно, вопрос вкуса, но ИМХО вариант 1 в данном случае однозначно.

Die-Hard ★★★★★
()

Спасибо всем большое. Буду использовать вариант 1, т.к. я в нем сомневался и выбрал 2.

anonymous
()

1 или 6, но лучше 1, т.к. этот вариант самый "читабельный".

Demon37 ★★★★
()


из приведённого выше - только п.1. всё остальное можно смело забыть как страшный сон и недоразумение.

// wbr

klalafuda ★☆☆
()

> Вариант 1 (длинный)

На мой взгляд это лучший вариант.

andreyu ★★★★★
()

представь себе, что ты видишь этот код в первый раз,
и тебе надо выяснить все про флаг output_float_as_double:
1) grep -d recurse output_float_as_double .
2) ...
3) профит

Поэтому только "длинный" вариант

(алсо, слеудет убивать за перевод _-нотации в верблюжью)

anonymous
()

Однозначно первый.

anonymous
()
Ответ на: комментарий от anonymous

> (алсо, слеудет убивать за перевод _-нотации в верблюжью)

+1

anonymous
()
Ответ на: комментарий от anonymous

> (алсо, слеудет убивать за перевод _-нотации в верблюжью)

А перевести для новичков? А то ведь так ничему не научимся ...

anonymous
()
Ответ на: комментарий от anonymous

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

И если для одних объектов использовать одно соглашение, а для других другое (например для локальных переменных или и имен классов, или для аттрибутов командной строки и имен соотвествующих им переменных), то жить становится намного унылее. Греп не работает опять же.

anonymous
()
Ответ на: комментарий от anonymous

> В идеале имя должно быть нулевой длины.

в идеале имени вообще не должно быть. все переменные сугубо анонимны.

// wbr

klalafuda ★☆☆
()
Ответ на: комментарий от klalafuda

>. все переменные сугубо анонимны.

и разрешить переменным постить картинки

anonymous
()
Ответ на: комментарий от Dendy

>Что значит буква О, а что буква А. Код должен читаться как книга. Неважно сколько он будет занимать килобайт и сколько времени понадобится для наборы пальцами лишних букв на клавиатуре.

Это Java-стиль. Приучишь их к нему, а потом они не заметят, как безболезненно перейдут на жабу.

Karapuz ★★★★★
()

По варианту 1 можно скриптом генерить конфиг содержащий коментарии (из кода).

wfrr ★★☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.