Facebook Joinc ±×·ì
Joinc QA »çÀÌÆ®
joinc´Â Firefox¿Í chrome¿¡¼ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.
17. Style
Next: 18. Tools and Resources
Up: C Programming FAQs
Previous: 16. Strange Problems
17. Style
$Id: Site_2fFAQ_2fCfaqHTML_2fnode19_2ehtml,v 1.1 2007/01/09 02:46:17 root Exp root $
Q 17.1
C ¾ð¾î ÄÚµùÀ» ÇÒ ¶§, °¡Àå ÁÁÀº ½ºÅ¸ÀÏÀº ¹«¾ùÀϱî¿ä?
Answer
K&RÀº ´ÙÀ½°ú °°Àº ´ÜÁ¡À» °¡Áö°í ÀÖÀ½¿¡µµ, °¡Àå ³Î¸® ¾²ÀÌ´Â
½ºÅ¸ÀÏÀÔ´Ï´Ù:
´ëºÎºÐ »ç¶÷µéÀÌ ±»Àº ¹ÏÀ½À» °¡Áö°í ÀÖÀ½¿¡µµ, Áß°ýÈ£ÀÇ ({})
À§Ä¡´Â Áß¿äÇÏÁö ¾Ê½À´Ï´Ù. ±×·¡¼ ¿ì¸®´Â ÀαâÀÖ´Â ½ºÅ¸ÀÏ Áß
Çϳª¸¦ ¼±ÅÃÇß½À´Ï´Ù. ¿©·¯ºÐ¿¡°Ô ¸Â´Â ½ºÅ¸ÀÏÀ» ãÀº ´ÙÀ½,
±×°ÍÀ» Àϰü¼ºÀÖ°Ô »ç¿ëÇϽñ⠹ٶø´Ï´Ù.
¿ÏÀüÇÑ ½ºÅ¸ÀÏÀ» ã´Â °Íº¸´Ù´Â, ÇϳªÀÇ ½ºÅ¸ÀÏÀ» Àϰü¼ºÀÖ°Ô
»ç¿ëÇÏ´Â °ÍÀÌ ´õ Áß¿äÇÕ´Ï´Ù. ¸¸¾à ¿©·¯ºÐÀÌ Ã³ÇÑ È¯°æÀÌ (¿¹¸¦ µé¾î,
¾î¶² Áö¿ªÀûÀÎ °ü½ÀÀ̳ª, ȸ»ç Á¤Ã¥ µî) ÀÌ·¯ÇÑ ½ºÅ¸ÀÏÀ» Á¤ÀÇÇÏÁö
¾Ê¾Ò°í, ¶Ç, ¿©·¯ºÐÀÌ »õ ½ºÅ¸ÀÏÀ» ¸¸µé·Á´Â ¸¶À½ÀÌ ¾ø´Ù¸é,
±×³É K&RÀ» ¾²½Ã±â ¹Ù¶ø´Ï´Ù. (¹°·Ð Áß°ýÈ£ÀÇ À§Ä¡³ª µé¿©¾²±âÀÇ
°£°Ý¿¡ ´ëÇÑ ¸¹Àº ³íÀïÀÌ ÀÖÀ» ¼ö ÀÖÁö¸¸, ¿©±â¿¡¼ ±×·± ³íÀïÀ»
ÇÏÁö´Â ¾Ê°Ú½À´Ï´Ù. Indian Hill Style Guide¸¦ Âü°íÇϱ⠹ٶø´Ï´Ù.)
`ÁÁÀº ½ºÅ¸ÀÏ'À̶õ (good style) ´Ü¼øÇÏ°Ô Äڵ带 ¾îµð¿¡ ¹èÄ¡ÇÏ´À³Äº¸´Ù
ÈξÀ ¸¹Àº °ÍÀ» ³»Æ÷Çϰí ÀÖ½À´Ï´Ù; don't spend time on formatting to the
exclusion of more substantive code quality issues.
µ¡ºÙ¿© Áú¹®
10.6µµ Âü°íÇϽñ⠹ٶø´Ï´Ù.
References
[K&R1 ] § 1.2 p. 10
[K&R2 ] § 1.2 p. 10
Q 17.3
µÎ ¹®ÀÚ¿ÀÌ °°ÀºÁö ºñ±³Çϱâ À§ÇØ ´ÙÀ½°ú °°Àº Äڵ带 ½è½À´Ï´Ù:
if(!strcmp(s1, s2))
À̰ÍÀÌ ÁÁÀº ½ºÅ¸ÀÏÀϱî¿ä?
Answer
ÈçÈ÷µé ±×·± ½ÄÀ¸·Î Äڵ带 ÀÛ¼ºÇϱâ´Â ÇÏÁö¸¸ Ưº°È÷ ÁÁÀº ½ºÅ¸ÀÏÀ̶ó°í
¸»Çϱâ´Â ¾î·Æ½À´Ï´Ù. À§ÀÇ ÄÚµå´Â µÎ ¹®ÀÚ¿ÀÌ °°Àº °æ¿ì¸¦ °Ë»çÇÑ´Ù´Â
Á¡¿¡¼´Â ÀüÇô ¹®Á¦°¡ µÉ °ÍÀÌ ¾øÁö¸¸, ! ¿¬»êÀÚ´Â
´ë°³ `not'À» ÀǹÌÇÏ´Â °÷¿¡ ¾²À̹ǷΠȥµ¿À» °¡Á®¿Ã ¼ö Àֱ⠶§¹®ÀÔ´Ï´Ù.
´ÙÀ½°ú °°Àº ¸ÅÅ©·Î¸¦ ¾²´Â °ÍÀÌ µµ¿òÀÌ µÉ °æ¿ìµµ ÀÖ½À´Ï´Ù:
#define Streq (s1, s2) (strcmp ((s1), (s2)) == 0)
µ¡ºÙ¿© Áú¹®
17.10µµ Âü°íÇϽñ⠹ٶø´Ï´Ù.
Q 17.4
¾î¶² »ç¶÷µéÀº if (x == 0)À» ¾²Áö ¾Ê°í if (0 == x)¿Í
°°Àº Äڵ带 ¾²´Â µ¥, ±× ÀÌÀ¯´Â ¹«¾ùÀΰ¡¿ä?
Answer
´ÙÀ½°ú °°Àº ½Ç¼ö¸¦ ÇÏ´Â °ÍÀ» ¸·±â À§ÇÔÀÔ´Ï´Ù:
if (x = 0)
»ó¼ö¸¦ == ¿¬»êÀÚÀÇ ¿ÞÂÊ¿¡ ¾²´Â ½À°üÀ» µéÀ̸é,
´ÙÀ½°ú °°Àº ½Ç¼ö¸¦ ÇßÀ» ¶§, ÄÄÆÄÀÏ·¯°¡ ¿¡·¯¸¦ ¹ß»ýÇÕ´Ï´Ù:
if (0 = x)
¾î¶² »ç¶÷µéÀº ÀÌ·± ¹æ½ÄÀ» ¾²´Â °ÍÀ» ¿Ü¿ì´Â °Íº¸´Ù µÎ °³ÀÇ =¸¦
¾²´Â °ÍÀ» ¿Ü¿ì´Â °ÍÀÌ ½±±â ¶§¹®¿¡, ÀÌ·± ¹æ½ÄÀ» ÁÁ¾ÆÇÏÁö ¾Ê½À´Ï´Ù.
(¹°·Ð, ÀÌ·¯ÇÑ ½ºÅ¸ÀÏÀº ÇÑ ¿ÀÆÛ·£µå (operand)°¡ »ó¼öÀÏ °æ¿ì¿¡¸¸
µµ¿òÀ» ÁÙ ¼ö ÀÖ½À´Ï´Ù.)
References
[H&S ] § 7.6.5 pp. 209-10
Q 17.5
Á¦°¡ º» Äڵ忡´Â printf () ¸¦ ºÎ¸¦ ¶§, Ç×»ó (void) ·Î
ij½ºÆÃÇϰí Àִµ¥¿ä, ¿Ö ±×·²±î¿ä?
Answer
printf () ´Â ¾î¶² ¼öÄ¡¸¦ ¸®ÅÏÇÏÁö¸¸, ´ë°³ÀÇ °æ¿ì ¾²ÀÌÁö ¾Ê½À´Ï´Ù.
¾î¶² ÄÄÆÄÀÏ·¯´Â (ƯÈ÷ lint¿Í °°Àº ÇÁ·Î±×·¥µµ) ÇÔ¼ö°¡ ¾î¶² °ªÀ»
¸®ÅÏÇϴµ¥, ÀÌ °ªÀ» ¾²Áö ¾ÊÀ¸¸é, °æ°í¸¦ Ãâ·ÂÇÕ´Ï´Ù. µû¶ó¼
(void) ·Î ij½ºÆÃÇØÁÜÀ¸·Î½á, ÀÌ ¸®ÅÏ °ªÀ» ¹«½ÃÇÑ´Ù´Â °ÍÀ»
ÄÄÆÄÀÏ·¯¿¡°Ô ¾Ë·Á, °æ°í¸¦ Ãâ·ÂÇÏÁö ¾Ê°Ô ÇÒ ¼ö ÀÖ½À´Ï´Ù.
strcpy () ³ª strcat () ÀÇ °æ¿ì¿¡µµ °°Àº ÀÌÀ¯·Î ij½ºÆÃÀÌ
»ç¿ëµÇ°ï ÇÕ´Ï´Ù.
References
[K&R2 ] § A6.7 p. 199
[ANSI Rationale ] § 3.3.4
[H&S ] § 6.2.9 p. 172, § 7.13 pp. 229-30
Q 17.8
``Çë°¡¸®¾È Ç¥±â¹ý''À̶õ (Hungarian Notation) ¹«¾ùÀΰ¡¿ä?
±×¸®°í ±×°ÍÀÌ ¾µ¸¸ÇÑ °¡Ä¡°¡ ÀÖ³ª¿ä?
Answer
Çë°¡¸®¾È Ç¥±â¹ýÀº Charles Simonyi¾¾°¡ ¸¸µç (º¯¼öÀÇ À̸§¿¡
º¯¼öÀÇ Å¸ÀÔ¿¡ ´ëÇÑ Á¤º¸¸¦ Æ÷ÇÔÇÏ´Â) À̸§ Áþ´Â ¹æ¹ýÀÔ´Ï´Ù.
¾î¶² »ç¶÷µé¿¡°Ô´Â ¸Å¿ì »ç¶û¹Þ´Â Ç¥±â¹ýÀ̸ç, ¾î¶² »ç¶÷µé¿¡°Ô´Â
¸Å¿ì ¹èô¹Þ´Â Ç¥±â¹ýÀÔ´Ï´Ù. ÀÌ Ç¥±â¹ýÀÇ °¡Àå Å« ÀåÁ¡Àº º¯¼öÀÇ
À̸§¸¸ º¸°íµµ, º¯¼öÀÇ Å¸ÀÔ°ú, ¾²ÀÓ»õ¸¦ ¾Ë ¼ö ÀÖ´Â °ÍÀÔ´Ï´Ù;
°¡Àå Å« ´ÜÁ¡Àº À̸§À» Áþ´Â µ¥ ŸÀÔ¿¡ °üÇÑ Á¤º¸°¡ º°·Î Áß¿äÇÏÁö
¾Ê´Ù´Â °ÍÀÔ´Ï´Ù.
References
Simonyi and Heller, "The Hungarian Revolution".
Note
Çë°¡¸®¾È Ç¥±â¹ýÀº ƯÈ÷ Microsoft»çÀÇ Win32 API¸¦ ¾²´Â ÇÁ·Î±×·¡¸Óµé¿¡°Ô
»ç¶û¹Þ°í ÀÖ½À´Ï´Ù. (API ÀÚüµµ ÀÌ Ç¥±â¹ýÀ» »ç¿ëÇϰí ÀÖ½À´Ï´Ù.)
´ë°³ÀÇ UNIX ÇÁ·Î±×·¡¸ÓµéÀº À̸¦ ¹èôÇϰí ÀÖ½À´Ï´Ù.
Q 17.9
``Indian Hill Style Guide''³ª ÀÌ¿Í À¯»çÇÑ ÄÚµù ½ºÅ¸ÀÏ¿¡ °üÇÑ
Ç¥ÁØÀ» ¾òÀ» ¼ö ÀÖ´Â °÷ÀÌ ÀÖ³ª¿ä?
Answer
Anonymous FTP¸¦ ½á¼ ¿©·¯ °÷¿¡¼ ¾òÀ» ¼ö ÀÖ½À´Ï´Ù.
Site:
File or directory
ftp.cs.washington.edu
pub/cstyle.tar.Z
(ÃÖ½ÅÀÇ Indian Hill Guide)
ftp.cs.toronto.edu
doc/programming (Henry Spencer¾¾ÀÇ
``10 Commandments for C Programmers'' Æ÷ÇÔ)
ftp.cs.umd.edu
pub/style-guide
``The Elements of Programming Style'', ``Plum Hall Programming
Guidelines'', ``C Style: Standards and Guidelines''¶ó´Â
Ã¥ÀÌ µµ¿òÀÌ µÉ ¼ö ÀÖ½À´Ï´Ù: `Âü°í¹®Çå'¶õÀ» º¸±â ¹Ù¶ø´Ï´Ù.
µ¡ºÙ¿© Áú¹®
18.9µµ Âü°íÇϽñ⠹ٶø´Ï´Ù.
Q 17.10
¾î¶² »ç¶÷µéÀº goto °¡ ¾Ç¸¶¿Íµµ °°´Ù°í ¸»ÇÏ¸é¼ Àý´ë·Î
¾²Áö ¸»¶ó°í Çϴµ¥, ³Ê¹« °úÀåµÈ ¸»ÀÌ ¾Æ´Ò±î¿ä?
Answer
ÇÁ·Î±×·¡¹Ö ½ºÅ¸ÀÏÀ̶õ, ±ÛÀ» ¾²´Â ½ºÅ¸Àϰú °°ÀÌ ¿¹¼ú°úµµ
°°Àº °ÍÀ̱⿡, ¾î¶°ÇÑ °°æÇÑ ±ÔÄ¢À¸·Î Á¦Á¤µÉ ¼ö ¾ø´Â °ÍÀÔ´Ï´Ù,
although discussions
about style often seem to center exclusively around such rules.
goto ¹®ÀåÀº ³²¿ëµÇ¸é À¯Áö/º¸¼ö/°ü¸®Çϱâ Èûµé Á¤µµÀÇ
º¹ÀâÇÑ, À̸¥¹Ù ½ºÆÄ°ÔƼ Äڵ带 (spaghetti code) ¸¸µé¾î ³¾ ¼ö ÀÖ½À´Ï´Ù.
±×·¸´Ù°í, ¾Æ¹«·± »ý°¢¾øÀÌ goto ¹®ÀåÀ» ¹«Á¶°Ç ±ÝÁöÇÏ´Â °ÍÀÌ
Áï°¢ ÁÁÀº Äڵ带 ¸¸µé¾î ³»´Â °Íµµ ¾Æ´Õ´Ï´Ù:
¹°·Ð goto ¸¦ ÀüÇô ¾²Áö ¾Ê°íµµ (ÀÌ»óÇØ º¸ÀÌ´Â ÁßøµÈ ·çÇÁ³ª,
ºÒ¸®¾ð Á¦¾î º¯¼ö¸¦ ½á¼) Äڵ带 ¸¸µé¾î ³¾ ¼öµµ ÀÖ½À´Ï´Ù.
´ëºÎºÐ ÇÁ·Î±×·¡¹Ö ½ºÅ¸ÀÏ¿¡ °üÇÑ ``±ÔÄ¢ (rule)''Àº ±ÔÄ¢À̶õ
´Ü¾îº¸´Ù´Â ``¾È³»Áöħ (guideline)''À̶õ ´Ü¾î·Î º¸´Â °Ô ´õ
¹Ù¶÷Á÷ÇÕ´Ï´Ù. ¶ÇÇÑ ÀÌ·¯ÇÑ ±ÔÄ¢µéÀÌ ¿Ö ¸¸µé¾îÁ³´Â °¡¸¦ ÀÌÇØÇÏ´Â
°ÍÀÌ ´õ Áß¿äÇÕ´Ï´Ù. ÀÌ·¯ÇÑ ±ÔÄ¢¿¡ ´ëÇÑ ÀÌÇØ¾øÀÌ, ¹«Á¶°Ç ¾î¶²
±¸Á¶¸¦ ¹èôÇÏ´Â °ÍÀº ¿ø·¡ ±ÔÄ¢ÀÌ ÀǹÌÇϰíÀÚ ÇÑ °Í°ú ¿ÀÈ÷·Á
¹Ý´ëµÇ´Â °á°ú¸¦ ¸¸µé¾î³¾ ¼ö ÀÖ½À´Ï´Ù.
°Ô´Ù°¡ ÇÁ·Î±×·¡¹Ö ½ºÅ¸ÀÏ¿¡ ´ëÇÑ ¸¹Àº ÀǰßÀº ´ÜÁö ÀǰßÀÏ »ÓÀÔ´Ï´Ù.
µû¶ó¼ ÀÌ·¯ÇÑ ``½ºÅ¸ÀÏ ÀüÀï''¿¡ Âü¿©ÇÏ´Â °ÍÀº ¾µµ¥¾ø´Â ÁþÀÔ´Ï´Ù.
(Áú¹®
9.2,
5.3,
5.9,
10.7¿¡ ÀÌ·¯ÇÑ ³»¿ëÀÌ ÀÖ½À´Ï´Ù.)
¿©·¯ºÐÀÇ Àǰ߿¡ ¹Ý´ëÇÏ´Â »ç¶÷Àº °áÄÚ ¿©·¯ºÐÀÇ Àǰ߿¡ µ¿ÀÇÇÏÁö ¾ÊÀ»
°ÍÀ̸ç, ¿©·¯ºÐÀÇ Àǰ߿¡ µ¿Á¶ÇÏ´Â »ç¶÷Àº °áÄÚ ¹Ý´ëÇÏÁö ¾ÊÀ» °ÍÀ̹ǷÎ,
ÀÌ·± ³íÀïÀ» ÇÒ Çʿ䰡 ¾ø½À´Ï´Ù.
Next: 18. Tools and Resources
Up: C Programming FAQs
Previous: 16. Strange Problems
All rights reserved. Copyright © 2004-2006 Seong-Kook Shin (½Å¼º±¹) Return to my homepage
2006-08-30