#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でもできるから、それをあとは自分でレビューしたら、品質の高い機能ができるかもしれないという仮説