Style
ÃÑ ÆäÀÌÁö ¼ö : 3224

Àüü ÇÔ¼ö/¿ë¾î»çÀü
Facebook Joinc ±×·ì   Joinc QA »çÀÌÆ®



joinc´Â Firefox¿Í chrome¿¡¼­ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼­´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.

17. Style next up previous contents
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 up previous contents
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
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.