IPB

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V   1 2 >  
Reply to this topicStart new topic
> CodingStyle, Кто как пишет?
Gloin
сообщение 25 Jan 2009, 22:02
Сообщение #1

thick as a brick
Сообщений: 898
Спасибо сказали: 23 раза




У каждого есть свои предпочтения в стиле кодинга, кто то при вызове функции отделяет переменные от скобок пробелами, кто то нет, кто то ставит фигурную скобку на той же строке что и if, а кто то переносит её вниз — давайте поговорим о своих привычках.
Я намедни решил внимательно прочитать http://lxr.linux.no/linux/Documentation/CodingStyle и от души посмеялся над пассажами в духе вот этого :
«Encoding the type of a function into the name (so-called Hungarian
notation) is brain damaged - the compiler knows the types anyway and can
check those, and it only confuses the programmer. No wonder MicroSoft
makes buggy programs.»
Go to the top of the pageAdd Nick
 
+Quote Post
gamecreator
сообщение 25 Jan 2009, 22:09
Сообщение #2

Яблочный произвол!
Сообщений: 11 080
Спасибо сказали: 3988 раз




я использую стиль Олмана, CamelCase.

зы. а насчет того высказывания - зря ты. я вот в упор не понимаю зачем типы переменных в названии нужны. разве что для асма. название переменной должно отражать ее суть, про что и говорится в цитате.
Go to the top of the pageAdd Nick
 
+Quote Post
Gloin
сообщение 25 Jan 2009, 22:11
Сообщение #3

thick as a brick
Сообщений: 898
Спасибо сказали: 23 раза




Так я с идеей Торвальдса и не спорю, меня его острый язык рассмешил.
Go to the top of the pageAdd Nick
 
+Quote Post
         
сообщение 25 Jan 2009, 22:43
Сообщение #4

God
Сообщений: 263
Спасибо сказали: 121 раз




Мой стиль:
CODE

/*
ReadWholeFile - считывает весь файл в строку
OUT: BOOLEAN (флаг результата)
*/
function ReadWholeFile($FileName, &$Data) {
$FileSize = @filesize($FileName);
if ($FileSize===false) {
return false;
} // .if
if ($FileSize>0) {
$hFile = fopen($FileName, 'rb');
if (!$hFile) {
return false;
} // .if
if (strlen(($Data = fread($hFile, $FileSize)))!==$FileSize) {
return false;
} // .if
fclose($hFile);
} // .if
else {
$Data = '';
} //.else
return true;
} // .function ReadWholeFile


CODE

PROCEDURE Init;
CONST
C_REWRITE_EXISTING = FALSE;

BEGIN
IF NOT Win.CopyFile(C_FILE_IN, C_FILE_OUT, C_REWRITE_EXISTING) THEN BEGIN
Error('Cannot create output file');
END; // .if
hFileOut:=Utils.FileOpen(C_FILE_OUT, fmOpenWrite OR fmShareExclusive);
IF hFileOut<0 THEN BEGIN
Error('Cannot open output file');
END; // .if
END; // .procedure Init
Go to the top of the pageAdd Nick
 
+Quote Post
Гость_Хмм.._*
сообщение 25 Jan 2009, 22:53
Сообщение #5







а мне пофиг
Go to the top of the pageAdd Nick
 
+Quote Post
Монца
сообщение 26 Jan 2009, 09:03
Сообщение #6

good news, everyone!
Сообщений: 918
Спасибо сказали: 93 раза




Ну и я тогда отпишусь, поскольку пишу на дельфи придерживаюсь стиля разработчиков, примеры можно посмотреть в VCL


--------------------
этъя опять
Go to the top of the pageAdd Nick
 
+Quote Post
Guevara-chan
сообщение 29 Jan 2009, 11:04 (Сообщение отредактировал Chrono Syndrome - 29 Jan 2009, 11:04)
Сообщение #7

•●Revolucionario●•
Сообщений: 2 467
Спасибо сказали: 5936 раз




Цитата
Linux style for comments is the C89 "/* ... */" style.
Don't use C99-style "// ..." comments.

Хм... Попыталась). Вот что пишут:

Цитата
/* Comment */
^^
Warning(-4104): /* is a *** deprecated *** word (see src\compat\evolve.f)  ok

С "//" проблем никаких.


--------------------
life MOV.I #life+1, *life
האם יש זמן לעצור ?
Go to the top of the pageAdd Nick
 
+Quote Post
Монца
сообщение 29 Jan 2009, 11:11
Сообщение #8

good news, everyone!
Сообщений: 918
Спасибо сказали: 93 раза




ну ворнинг и че? ) написано же деприкейт.
А сишный комментарий - это однострочный.


--------------------
этъя опять
Go to the top of the pageAdd Nick
 
+Quote Post
Guevara-chan
сообщение 29 Jan 2009, 11:22
Сообщение #9

•●Revolucionario●•
Сообщений: 2 467
Спасибо сказали: 5936 раз




Цитата
написано же деприкейт.

Вот именно. Все что "deprecated" могут убрать в любом новом релизе.


--------------------
life MOV.I #life+1, *life
האם יש זמן לעצור ?
Go to the top of the pageAdd Nick
 
+Quote Post
gamecreator
сообщение 29 Jan 2009, 12:21
Сообщение #10

Яблочный произвол!
Сообщений: 11 080
Спасибо сказали: 3988 раз




однострочные коменты рулят. особенно если среда разработки имеет ф-цию комента выделенных строк
Go to the top of the pageAdd Nick
 
+Quote Post
Gloin
сообщение 29 Jan 2009, 12:44
Сообщение #11

thick as a brick
Сообщений: 898
Спасибо сказали: 23 раза




Простите, может изза того что я только проснулся, может по другой причине, но я не понимаю, о чем вы говорите.
В С99 появились однострочные комменты, но по традиции в ядре принято использовать /**/ ещё и звёздочки в начале каждой строки ставить.
А что это за анализатор такой ворнинги на комменты выдаёт?
Go to the top of the pageAdd Nick
 
+Quote Post
Guevara-chan
сообщение 29 Jan 2009, 18:27
Сообщение #12

•●Revolucionario●•
Сообщений: 2 467
Спасибо сказали: 5936 раз






--------------------
life MOV.I #life+1, *life
האם יש זמן לעצור ?
Go to the top of the pageAdd Nick
 
+Quote Post
gamecreator
сообщение 29 Jan 2009, 19:12
Сообщение #13

Яблочный произвол!
Сообщений: 11 080
Спасибо сказали: 3988 раз




Цитата
Linux style for comments is the C89 "/* ... */" style.
Don't use C99-style "// ..." comments.

а вот ту видимо говорится как раз про си
Go to the top of the pageAdd Nick
 
+Quote Post
Guevara-chan
сообщение 29 Jan 2009, 21:55
Сообщение #14

•●Revolucionario●•
Сообщений: 2 467
Спасибо сказали: 5936 раз




Нет, тут говорится о комментариях в стиле С. Просто автор явно не в курсе, что они поддерживаются и некоторыми другими языками).


--------------------
life MOV.I #life+1, *life
האם יש זמן לעצור ?
Go to the top of the pageAdd Nick
 
+Quote Post
Gloin
сообщение 29 Jan 2009, 22:10 (Сообщение отредактировал Gloin - 29 Jan 2009, 22:11)
Сообщение #15

thick as a brick
Сообщений: 898
Спасибо сказали: 23 раза




Статья Торвальдса описывает стиль кода ядра Линукс и форта не касается никоим образом.
Go to the top of the pageAdd Nick
 
+Quote Post
Guevara-chan
сообщение 30 Jan 2009, 11:44 (Сообщение отредактировал Chrono Syndrome - 30 Jan 2009, 11:45)
Сообщение #16

•●Revolucionario●•
Сообщений: 2 467
Спасибо сказали: 5936 раз




Не только, он еще пытается давать советы как надо писать программы.

Код
1) macros that affect control flow:
#define FOO(x)                                  \
             do {                                    \
                  if (blah(x) < 0)                \
                   return -EBUGGERED;      \
       } while(0)
is a _very_ bad idea.;


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


--------------------
life MOV.I #life+1, *life
האם יש זמן לעצור ?
Go to the top of the pageAdd Nick
 
+Quote Post
Gloin
сообщение 30 Jan 2009, 13:32
Сообщение #17

thick as a brick
Сообщений: 898
Спасибо сказали: 23 раза




Ретёрны в макросы лучше не прятать, иначе использующий твой код будет долго удивляться ходу работы получившегося продукта.
Go to the top of the pageAdd Nick
 
+Quote Post
gamecreator
сообщение 30 Jan 2009, 14:49
Сообщение #18

Яблочный произвол!
Сообщений: 11 080
Спасибо сказали: 3988 раз




а я думаю что под плохой идеей он имел ввиду мусор типа do{}while(0);
Go to the top of the pageAdd Nick
 
+Quote Post
Gloin
сообщение 30 Jan 2009, 16:33 (Сообщение отредактировал Gloin - 30 Jan 2009, 16:33)
Сообщение #19

thick as a brick
Сообщений: 898
Спасибо сказали: 23 раза




Код
Macros with multiple statements should be enclosed in a do - while block:

#define macrofun(a, b, c)                       \
       do {                                    \
               if (a == 5)                     \
                       do_this(b, c);          \
       } while (0)
Go to the top of the pageAdd Nick
 
+Quote Post
gamecreator
сообщение 30 Jan 2009, 21:00
Сообщение #20

Яблочный произвол!
Сообщений: 11 080
Спасибо сказали: 3988 раз




а почему не {}? их же вроде можно ставить просто так
Go to the top of the pageAdd Nick
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 7 March 2026 - 07:13
Copyright by Алексей Крючков
Strategy Gamez by GrayMage
Programming by Degtyarev Dmitry
  Яндекс.Метрика