記事

いいコードとは何かを自分なりに考えてみる

#tech

ふとドライブしているときに、考えてみたので、それを残しておく

変更するのは一箇所で、変更したい項目が修正できる

  • 修正しないといけないところが複数ある、どうしても抜けが出てしまうので、それは防ぎたいなっていうのは感じている
  • プロダクトが大きくなれば、なるほどいちいち変更箇所を何回も修正している訳にはいかない

関数は呼び出し元から関数に必要な値を注入して、返り値がある

  • // 呼び出し元
    const { uid } = await getUser();
    const workspace = await getWorkSpace(uid)
    
    // 呼び出される関数の定義
    type WorkSpace = {
      roomId: string;
      inviteMember: User[]
    }
    consu getWorkSpace = async (uid: string): Promise<WorkSpace | undefined> => {
     // workspace取得処理を書く
     return workspace
    }
    • 上記のように、関数の内部でconst { uid } = await getUser();を書くこともできると思うのですが、それをしてしまうと、関数の内部まで処理を見ないといけないので、どこかでバグが発生すると、誰が書いたかわからない関数の内部のコードまでを読まないといけないのは、いいコードとは言えないのかなー?って思っています。

2024/12/10

  • 関数のinterfaceに沿って、内部処理を読まなくても、使うことができる関数
  • // 数字が10以上か検証する関数
    fn validate_greater_than_or_equal_to_10(num: i32) -> Result<i32, &'static str> {
        if num >= 10 {
            Ok(num)
        } else {
            Err("数字は10未満です。")
        }
    }
    
    fn main() {
        // 判定する数字を変数に代入します
        let num1: i32 = 15;
        let num2: i32 = 5;
    
        // 関数を使って数字が10以上かどうかを判定し、結果を表示します
        match validate_greater_than_or_equal_to_10(num1) {
            Ok(result) => println!("{}は10以上です。", result),
            Err(error) => println!("{}", error),
        }
    
        match validate_greater_than_or_equal_to_10(num2) {
            Ok(result) => println!("{}は10以上です。", result),
            Err(error) => println!("{}", error),
        }
    }
  • 例えば、Rustなどでは、例外が飛ぶかどうかはわからないが、返り値にはTSでいう、numberかstringしか飛んでこないのが理解できる
    • 多分こういう状態なんだろう

でも、TSとかだったら、自前で例外を飛ばすことができる

  • // 数字が10以上かどうかを判定する関数
    function validateGreaterThanOrEqualTo10(num: number): number {
        if (num >= 10) {
            return num;
        } else {
            throw new Error("数字は10未満です。");
        }
    }
  • interfaceだけ見ても、number以外飛んでくるやんけ!!バグったやんけっていうことが発生しうる

例えば、APIから初期値があって、それを表示して、userが入力して、保存する時の処理はどうかくのがいいのか??

自然言語でデザインドッグをしてから、コードを書き起こすようにすると綺麗なコードをかけるのではないか?

  • 確かに、プログラミング言語で詰まって、レビューに時間かかるより、綺麗に設計はできそうな気がする
  • 今は自分の弱点は、設計にあるから、それをまずは日本語で書き起こすことができたら、コードを書くのは、AIでもできるから、それをあとは自分でレビューしたら、品質の高い機能ができるかもしれないという仮説

© 2026 Shotaro Kinjo