いいコードとは何かを自分なりに考えてみる
public.icon
ふとドライブしているときに、考えてみたので、それを残しておく
修正しないといけないところが複数ある、どうしても抜けが出てしまうので、それは防ぎたいなっていうのは感じている
プロダクトが大きくなれば、なるほどいちいち変更箇所を何回も修正している訳にはいかない
code:ts
// 呼び出し元
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に沿って、内部処理を読まなくても、使うことができる関数
code:rs
// 数字が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しか飛んでこないのが理解できる
多分こういう状態なんだろう
https://gyazo.com/005558976ce4ae2bfcc266934b3ca870
でも、TSとかだったら、自前で例外を飛ばすことができる
code:ts
// 数字が10以上かどうかを判定する関数
function validateGreaterThanOrEqualTo10(num: number): number {
if (num >= 10) {
return num;
} else {
throw new Error("数字は10未満です。");
}
}
interfaceだけ見ても、number以外飛んでくるやんけ!!バグったやんけっていうことが発生しうる
例えば、APIから初期値があって、それを表示して、userが入力して、保存する時の処理はどうかくのがいいのか??
確かに、プログラミング言語で詰まって、レビューに時間かかるより、綺麗に設計はできそうな気がする
今は自分の弱点は、設計にあるから、それをまずは日本語で書き起こすことができたら、コードを書くのは、AIでもできるから、それをあとは自分でレビューしたら、品質の高い機能ができるかもしれないという仮説