Соглашение об именах для распределенных / нераспределенных строк - PullRequest
1 голос
/ 28 июня 2011

Существуют ли общие соглашения о присвоении имен для различения строк, которые выделены и не выделены? Надеюсь, что-то похожее на us / s из Создание неправильного кода выглядит неправильно , но я бы предпочел использовать что-то общее, чем придумывать свой собственный.

1 Ответ

1 голос
/ 28 июня 2011

Условное обозначение us / s в статье несколько полезно, но в нем пропущен более важный момент.Дело в том, что соглашения о присвоении имен переменным так же хороши в защите от ошибок, как документация.

Например:

#Version 1

char* sHello = "Hello";
printf("%s\n", sHello);

, который в конечном итоге изменяется на

#Version 2
char* sHello = "Hello";
... 100 lines of code ...
sHello = realloc(sHello, strlen(sHello)+7);
strcpy(sHello+strlen(sHello), " World");
... 100 lines of code ...
printf("%s\n", sHello);

Когда вы действительно хотите, чтобы соглашение о кодировании работало, вы не можете полагаться на какие-то произвольные (и да, все они произвольные) соглашения об именах.Вы должны подкрепить это соглашение об именах средствами неудачной сборки.В приведенном выше случае разумное использование ключевого слова const помогло бы, но соглашение о кодировании приведёт людей к самоуспокоенности, потому что оно правильно названо.

Это проблема документации во всемОпять же, в конечном итоге документация в коде не синхронизируется с кодом, и ваше соглашение о присвоении имен в коде в конечном итоге будет не синхронизировано с использованием этих имен.

Теперь, если вы хотитечтобы добавить информацию о типах в C (что на самом деле и есть), сделайте это через систему, которая фактически добавляет типы в c, typedef.Затем создайте систему, которая может проверить, не используется ли тип, когда это необходимо, и завершить сборку.Все остальное будет стоить вам слишком много после поиска, обслуживания и очистки, и половина реализованного стиля кодирования намного хуже, чем даже плохой стиль кодирования.

...