関数_メソッド_新規実装の_より良いやり方

関数・メソッドの新規実装のより良いやり方

ご挨拶

はじめましての人ははじめまして。がっちゃんです

新年一発目でなんとなく雑にアウトプットしたいなと思ったので、今回は自分の中でこの書き方いいな。と思ったコードの書き方(新しい関数・メソッドの実装の手順)について書いていきたいと思います

Qiitaに書いてもいいなと思ったんですが、ちょうどQiita自体が落ちていたのと、なんか技術そのものについての話でもないので、こっちに書くことにしました

本題

自分はここ最近は下記のような形で書くように気をつけています
実装部分に関しては自分が一番よく書くJSで書いていきますが、コメントも入れますし、大して難しいことをやるわけではないのであまり身構えずご覧ください

・関数のガワを作る
・中にコメントで仕様を書き込む
・それぞれの仕様を一つ一つ実装していく
・書き込んだ仕様のうち、不要なものを削る
・関数の完成!

関数のガワを作る

まずはこれがないとどうしようもないので、まずはここから(ほらそこ!function使うんかよ…とか言わない!)

// 与えられた英語を元に日本語に変換する(inputに与えてたvalueから画面表示用の文言に変換する時とかによくやるやつ)
function convertJapanese(_values /* Array */) {

}

中にコメントで仕様を書き込む

// 与えられた英語を元に日本語に変換する(inputに与えてたvalueから画面表示用の文言に変換する時とかによくやるやつ)
function convertJapanese(_values /* Array */) {
    let convertedValue = [];
    // SPEC: 元データ確認用のconsole.log
    // SPEC: データ内のvalueをkeyにして辞書から日本語化
    // SPEC: 変換後データ確認用のconsole.log
    return convertedValue
}

自分は大体一回この段階でコミットするようにしてます
まだ業務とかで使ったことはないのですが、新規メソッドを実装する時にレビューをしてもらう時にやりたかったことがサクッと伝えられるし、レビューをしてもらわない場合でも、自分が何をしようとしてたか後々確認できるので良きです

それぞれの仕様を一つ一つ実装していく

あとは普通に関数を実装するだけ

// 与えられた英語を元に日本語に変換する(inputに与えてたvalueから画面表示用の文言に変換する時とかによくやるやつ)
function convertJapanese(_values /* Array */) {
    let convertedValues = [];

    // SPEC: 元データ確認用のconsole.log
    console.log(_values);

    // SPEC: データ内のvalueをkeyにして辞書から日本語化
    convertedValue = _values.map(value => {
        return JapaneseDictionary[value]
    });


    // SPEC: 変換後データ確認用のconsole.log
    console.log(_values);
    console.log(convertedValues);

    return convertedValues;
}

書き込んだ仕様のうち、不要なものを削る

最後に関数の中身をキレイにしてしまいましょう。この際、SPEC: の文字だけ消してしまえば、各ステップでこのメソッドが何をしているのかわかりやすくなるコメントを残すことができるため、余計な手間をかけずにリーダブルなコードを書くことができますね

// 与えられた英語を元に日本語に変換する(inputに与えてたvalueから画面表示用の文言に変換する時とかによくやるやつ)
function convertJapanese(_values /* Array */) {
    let convertedValues = [];

    // データ内のvalueをkeyにして辞書から日本語化
    convertedValue = _values.map(value => {
        return JapaneseDictionary[value]
    });

    return convertedValues;
}

関数の完成!

さあ、以上で作りたかった関数が完成です!

さて、関数が完成した所でまとめに入ると、要約してひとことで言えば仕様を日本語で言語化してからコードを書き進める。というだけの何の変哲もないことなのですが、これがなんだかんだ、色んなコードを行ったり来たりしたり、別の実装をやらないといけなくなって、戻ってきた時などに結構効くんですよね…

おそらくエンジニアの皆さんは最初に全部仕様をコード内に書き込むのは流石にめんどくさいなって思うとは思うんですが、個人開発でも「何をやろうとしてたっけ?」と思い出すコストが減ることや複数人開発での「実装後にレビューで手戻りが起きる」コストが減ることを考えると、結局、手間対効果で見るとトントンか、若干このやり方の方がおトクなのかなと思っております

あと、残されたコメントは後任者にとってもありがたいですし

そんな優しい世界を作るためにコードを書く時にできるちょっとした手間を見出したのでメモがてら雑に記事にしました
ここまで読んでくださった皆さんありがとうございます

では、最後に今日は 2019年1月1日なので年始のご挨拶をして記事の締めとしたいと思います

皆さまあけましておめでとうございます
本年もちょこちょこnoteにも記事を書いたり、Qiitaにも記事を書いたりする予定ですので(というか年末年始で絶賛2本執筆中)、ゆるっと読んでいただけますと幸いです

また、Wantedlyのつながりも募集しておりますので良ければぜひ
https://www.wantedly.com/users/18141770

本年もよろしくお願いいたします!🙇

いいなと思ったら応援しよう!