LiteCore Kernelをコーディングする際に、できるだけ守ってほしいガイドラインです。これは、私の個人的な意見も含みます。
4じゃないと見づらい、という人がいるかもしれませんが、それはコードの問題です。私の思う限り、インデントはコードブロックを見やすくするためのものなはずです。インデントが多くて見づらいコードは、つまり入れ子となっているブロックが多すぎます。減らしましょう。折返しがされないくらいが程よいと思います。
私は日本語話者ですが、英語でのコメントも良いと思います。ただし、一つのファイル内では統合してください。
ただ見づらくなり、コードの書き換えが難しくなるだけです。
if (foo == boo) do_1(), do_2();よりも
if (foo == boo) {
do_1();
do_2();
}のほうが見やすいのは一目瞭然です。
かんたんに書いてください。なにも複雑なコードを書く必要はありません。見やすく、かんたんで、わかりやすければどんなコードでも構いません。
int file_count = 0;
char source_dir[256];
const char* config_value = NULL;int load_config(void);
const char* get_config_value(const char* key);
void build_compile_command();どこぞのモダン言語のようにかっこよさを求める必要はありません
#define MAX_LINE_LENGTH 256
#define CONFIG_FILE "../.config"
#define DEFAULT_COMPILER "gcc"どうしても必要な場合は、static を使用してファイルスコープに限定してください。 はい。どうしても必要な場合はです。
// 良い例
int load_file(const char* filename) {
FILE* fp = fopen(filename, "r");
if (fp == NULL) {
return -1; // エラーを示す
}
// ...処理...
fclose(fp);
return 0; // 成功を示す
}
// 使用例
if (load_file("config.txt") != 0) {
fprintf(stderr, "Failed to load config\n");
return 1;
}const char* value = get_config_value("CC");
if (value == NULL) {
value = "gcc"; // デフォルト値を使用
}最低限、関数/定数/構造体にはドキュメントコメントをつけてください。
コメントを書くのはとてもいいことですが、書きすぎないでください。
char* buffer = malloc(1024);
if (buffer == NULL) {
return -1;
}
// ...使用...
free(buffer);
buffer = NULL; // ダングリングポインタを避ける#define MAX_FILES 100
char files[MAX_FILES][256]; // サイズが明確#ifndef _CONFIG_H
#define _CONFIG_H
// 宣言...
#endif /* _CONFIG_H */// 良い例:単一責任
int count_c_files(const char* dir_path);
int load_file_list(const char* dir_path, char files[][256]);
// 悪い例:複数の責任
int count_and_load_files(const char* dir_path, char files[][256]);引数が多い場合は、構造体を使用することを検討してください。
// 構造体を使用した例
typedef struct {
char cc[64];
char cflags[256];
char output_dir[256];
int debug_symbols;
} build_config_t;
void build_command(const build_config_t* config, char* command);テストはすべてinclude/tests/define.h, src/tests/run.cと既存のテストを読んで追加してください。ある程度のプログラマであれば、書き方がわかるはずです。
- 未使用の変数はないか
- メモリリークはないか
- エラーハンドリングは適切か
- コメントは適切か
あなたが夜寝て、スッキリした後にそのコードを見たとき、すぐに理解できるかどうかを考えてください。
このガイドラインは絶対的なものではありません。プロジェクトの要求や状況に応じて、適切に判断して使用してください。重要なのは、一貫性とコミュニティ全体での合意です。