GN⁺: 2023년 말 현재의 나의 개인적인 C 코딩 스타일
(nullprogram.com)- 2023년 말까지의 개인적인 C 코딩 스타일에 대해 저자가 논의하며, 기법에서의 중요한 변화와 개선점을 강조합니다.
- 저자는 원시 타입에 대해 짧은 이름을 사용하기 시작했으며, 이는 명확성을 높이고 코드 검토를 더 즐겁게 만든다고 발견했습니다.
- 저자는
typedef uint8_t u8;
및typedef char16_t c16;
과 같은 원시 타입에 대한 새로운 명명 규칙의 예를 제공합니다. - 저자는 함수처럼 보이는 매크로에 대해 소문자를 채택했는데, 이는 읽기 쉽고 다른 매크로 정의와 같은 네임스페이스 문제가 없기 때문입니다.
- 저자는
const
의 사용을 중단했는데, 이는 최적화에서 실질적인 역할을 하지 않고 실수를 잡아내지 못했기 때문입니다. 그들은 C에 포함된 것이 실수라고 믿습니다. - 저자는 null-terminated 문자열을 거부하고 기본 문자열 타입을 받아들였으며, 이는 더 생산적이라고 발견했습니다.
- 저자는 out 파라미터 대신 구조체 반환을 선호하며, 이를 통해 여러 값 반환을 효과적으로 허용합니다.
- 저자는 초기화자에서 벗어나 전통적인 제로 초기화자를 제외하고는 할당으로 초기화하는 것을 선호합니다.
- 저자는
__attribute
를__attribute__
보다 선호하며, 후자를 과도하고 불필요하다고 판단합니다. - Win32 시스템 프로그래밍에 대해, 저자는 빌드 시간을 줄이고, 네임스페이스를 정리하고, 프로그램과 더 깔끔하게 인터페이스하기 위해 사용자 정의 타입을 사용하여 프로토타입을 수동으로 작성하는 것을 권장합니다.
- 저자는
wordhist.c
와asmint.c
와 같은 작은 프로그램에서의 코딩 스타일 예를 제공합니다.
Hacker News 의견
- 2023년 말에 저자의 개인적인 C 코딩 스타일에 대한 기사.
- 일부 댓글 작성자들은 저자가 자신의 타입을 정의하는 방식에 동의하지 않으며, 이것이 이미 C 타입에 익숙한 사람들을 혼란스럽게 할 수 있다고 주장합니다.
- 상수에 대해 "ALL_CAPS" 사용에 대한 논란이 있으며, 일부는 이것이 전처리기 매크로에 예약되어야 한다고 주장합니다.
- 저자가 signed 크기를 사용하는 것에 대한 비판이 있으며, 일부 댓글 작성자들은 unsigned 크기가 결함에 덜 취약하다고 주장합니다.
- 저자가 기존의 관례, 예를 들어 표준 uint8_t 또는 int32_t 대신 u8 또는 i32를 사용하는 것에서 벗어나는 것이 다른 사람들에게 혼란을 줄 수 있다고 보입니다.
- 일부 댓글 작성자들은 저자의 접근 방식이 C 코드를 모두가 쉽게 작업할 수 있게 만드는 것보다는 개인적인 선호에 더 초점을 맞춘 것 같다고 주장합니다.
- 저자가 32비트 boolean을 사용하는 것에 대한 의문이 제기되며, 일부는 이것이 명확한 이점 없이 메모리를 낭비한다고 주장합니다.
- float가 32비트이고 double이 64비트라는 저자의 가정에 대한 우려가 있으며, 이것이 잠재적으로 문제가 될 수 있다고 보입니다.
- 코딩에서 "개인적인 스타일" 개념이 문제가 될 수 있다고 보이며, 프로그래밍은 궁극적으로 사회적 활동이기 때문에, 취미 프로젝트에도 해당됩니다.
- 일부 댓글 작성자들은 저자가 out-parameters보다 structs를 선호하는 것에 동의하지 않으며, 이것이 함수를 구성하기 어렵게 만들고 타입의 증가를 초래한다고 주장합니다.
- 이 기사는 다양한 코딩 스타일과 접근 방식에 대한 토론을 촉발하며, 프로그래밍 커뮤니티에서 의견의 다양성을 강조합니다.