ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Kernel Coding style
    개발하면서/타인글보면서 2012. 3. 21. 06:04

    이번 포스트는 직독직해를 한게 아니라 내용중에 제가 필요한 부분만 적어보았습니다.

    요새 고민하는게 있습니다.

    무언가 배울때 생각하면서 배워야한다는점. 무조건 배우려고 하는건 아닌것같아요 : )

    이게 내가 능력도 안되는데 마냥 하고싶은건가, 해야되는건가, 하면 좋은건가! 뭐 이런 생각들이요 ㅎㅎ

     

    잘못 썼거나 추가하면 좋은 글이 있다면 알려주시면 감사하겠습니다.

     

    Kernel Coding style

     

    1. indentation

    탭은 8글자, identation도 8글자

    누군가는 8글자가 너무 오른쪽으로 치우지게 하는것 아니냐고 불평할수도 있다.

    깊이 {, }가 3 이상일때 그렇게 되는데 해주고 싶은 말은, 프로그램을 고쳐라.

    (depth가 3 이상인건 잘못됐다는뜻;; 난 여차하면 4이상인데.....후덜덜)

     

    한줄에 여러 문장을 쓰지마라

    if (condition) dothis()   //여기에 쓰지말자~!!
          do_something_everything()
    


    또한 한번에 여러개의 변수에 할당을 하지마라

    int a = b = c = 0;    //이것도 내가 자주 하는건데;;;
    


    2. Breaking long lines and Strings

    깊이가 깊은게 아니라 출력하려는 문장이 길경우(80칸이 넘어갈경우 )

    긴 문장을 뜻이 되게 잘 나누어서 코딩한다

     

    3. Placing Braces and Spaces

    K&R에 따르면

    if, switch, for, while, do의 문장의 경우 brace는 같은 줄에서 연다

    if (x == y) {
    	...
    } else if (x > y) {
    	...
    } else {
    	...
    }
    


    그러나 함수의 경우에는 다음줄에 연다

    int f9unction(int x) 
    {
    	body of function
    }


    문장이 하나만 있으면 brace 할 필요가 없다

    if (condition)
    	action()

    예외) 다른조건에서 brace를 사용하면 한 문장이 있어도 brace를 사용

    if (condition) {
    	do_this()
    	do_that()
    } else {
    	otherwise()
    }


    3.1 spaces

    if, switch, case, for, while, do 다음에는 공백추가

    sizeof, typeof, alignof, __attribute__같은것 뒤에는 공백 없음

     

    (, ) 안쪽에는 공백을 넣지 않는것이 좋다. (;; 이거 내가 항상 하는건데.....)

    s = sizeof( struct file )  // x  bad style

     

    binary and ternary 연산자는 양옆에 공백

    unary 연사자는 공백 없음

     

    4. Naming

    헝가리안 표기법은 쓰지마라

    tmp, foo는 ......어후;; shotting offense와 같은거다. (치고빠지기 뭐 그런건가?;; 유지보수는 신경안쓰는..)

     

    5. Typedefs

    typedef가 마냥 좋은건 아니라고~!!!!

    .........

     

    14. Allocation memory

    커널에서 메모리 할당하라고 제공하는 function : kmalloc(), kzalloc(), kcalloc(), vmalloc(), vzalloc()

    ......

     

    16. Function return values and names

    리턴값을 이용하여 함수의 성공여부를 판단하는데

    두가지 방법이 있다.

    err-code(-Exxx = failure, 0 = success)방법이 있고, boolean (0 = failure, non-zero = success)방법이 있다.

     

    두가지가 섞여서 사용하게되면 헷갈릴수가 있으므로 다음과 같은 규칙이 있다.

        함수명이 어떤 액션을 취하면  err-code방식
        소개하는 함수명이면 boolean 방식

     

    예를들어 add_work() 의 경우 err-code, pci_dev_present()의 경우 boolean 방식을 사용한다.



    출처 : http://www.kernel.org/doc/Documentation/CodingStyle

     

    댓글 2

    • 좡이 2012.03.21 10:00 신고

      좋은 포스팅 감사합니다 ㅠ
      요즘 사수에게 엄청 지적받는 부분인대 .. 무엇을 보고 표준으로 삼아야 하는지 찾을수가 없었거든요 ㅠ
      출처를 포함해서 정리도 감사드립니다~!

      • 오산돌구 2012.03.22 14:46 신고

        도움이 됐다니 좋네요 : )
        좋은건 내껄로 만들고 좀 아닌건 버리고.....뭐 그러면서 자신만의 세계를 만들어보아요 ㅋㅋ

Designed by Tistory.