こんにちは、株式会社ベストティーチャーで元気に働く たわら です。
とある日
先輩 「 キャンペーンのダミーデータを作ってくれる? rakeタスクで 」
ボク 「 ハイ! 」
ボク 「 ゴニョゴニョ、、、よし」
task campaign: :environment do
Campaign.create(
title: "ダミーキャンペーン",
message: "条件 2021年1月1日(金)〜1月31日(日)までにキャンペーンに参加",
duration: Time.zone.parse('2021-01-01 00:00:00')..Time.zone.parse('2021-01-31 23:59:59'))
end
ボク「 できました! 」
先輩 「 ...... 」
先輩 「 ...... 」
先輩 「 これ一回きりしか使えないね、、、 」
先輩 「 時間が経っても使いやすい汎用性の高いコードに改善しよう! 」
先輩 「 たとえば、先に変数で定義して、範囲は実行時点の月初から月末にするとか、、、 」
先輩 「 あとタスク名はわかりやすく、dummy_campaign
にしよう」(コメントでご指摘いただき追記しました)
ボク 「 ハイ! 」
task dummy_campaign: :environment do
start_day = Time.current.beginning_of_month
end_day = Time.current.end_of_month
str_start_day = start_day.strftime("%Y/%m/%d/%a")
str_end_day = end_day.strftime("%Y/%m/%d/%a")
Campaign.create(
title: "ダミーキャンペーン",
message: " 条件 #{str_start_day}〜#{str_end_day}までにキャンペーンに参加 ",
duration: start_day..end_day)
end
先輩 「 、、、んー、よいでしょう! 」
先輩 「 こうすれば、すぐ使えるね。毎回書き直さなくてよいから、今後使う人に親切になるね 」
ボク 「 勉強になりました! 」
学び
時間が経って、自分以外の人がコードを見た場合の、汎用性や利便性を考えて、コードを書きましょう!
エンジニアとしてガシガシ勉強してグングン成長したいです!
2020/1/8 大事な追記 ver1(@nirasan さんにコメントでご指摘をいただきました。ありがとうございます!)
ただし要件によっては、修正前のコードでも問題ない場合があるので、、、
できれば、値が静的になる場合も動的になる場合もありえるということを憶えておき、実装する前に「なんのために使いたいか?」「どう使いたいか?」ということをヒアリングし理解して、要件に合わせて実装していく、という流れで作業してみるのが良いと思います。
というステップで仕事を進めていきたいと思います。
まさに業務を進めていく上でどこかで感じていた、もやもやしていた気持ちが、こちらのコメントで晴れました。要件をヒアリングする技術も磨いていきたいですね。Qiitaにアウトプットしてよかった!
2020/1/9 大事な追記 ver2(@dyoshikawa さんにコメントでご指摘をいただきました。ありがとうございます!
「別の人が見ても読みやすい」(可読性)
「時間が経っても使いやすい」(汎用性)
の2つを混同してしまっているかもしれません。
今回の先輩の指摘と筆者さんの改善は専ら後者の内容であるように思いました。
修正前のコードの問題は(今回の文脈の場合)、可読性が低い、のではなく、汎用性が低いことでした。ご指摘を受け、、、
・記事の意図がわかりやすいようにタイトルの変更
「時間が経って、別の人が見ても使いやすいコードを書こう」
↓
「時間が経っても使いやすい汎用性の高いコードを書こう」
・一部文章の変更
を行いました。コードの可読性と汎用性の違いを切り分けて学習していこうと思います。アウトプットしてよかったです!
追記おわり
宣伝
オンラインで英語を「書く」「話す」能力を磨く機会を提供するサービスを提供しています。
iOSエンジニアを募集していますので、よかったらご検討ください。
英語を学びながら働きたいiOSエンジニア募集 - Qiita Jobs
https://jobs.qiita.com/employers/266/postings/1102
(了)