eljefeblog 

Any sufficiently advanced technology is indistinguishable from magic

programming

【初心者向け】知っておくべき美しいコードの書き方【プログラミング独学】

独学でプログラミングを学ぶ初心者へ



初めてプログラミングを学び始めた方は
以下のような疑問を持っているかもしれません。

悩むペン銀

プログラミング学習を始めたばかりで基本的な構文は理解できるようになったけど正しいコーディング方法についてまだ詳しく知らない。

コーディングのレベルを上達させてエンジニアとして成長するには、どんな事に気を留めておけば良いのだろう?


本記事はこのような疑問・想いに答えていく内容となっています。



本記事の内容


  • 美しいコードと悪いコードの定義について

  • 美しいコードを書くために必要な技術







  • 美しいコード” を書くべき理由


    美しいコードの定義とは



    具体的に美しいコードとはどう言ったものでしょうか?

    プログラミングの世界では
    美しいコードは大きく、以下項目の要件を満たすコードを指します。


  • ①読みやすいこと

  • ②意図が明確であること

  • ③後々変更し易いこと


  • 順番に見ていきましょう。


    ①読みやすいこと

    他者がそのコードを見たとき、何を行うプログラムであるのか
    明確に理解する事ができる事


    ②意図が明確であること

    変数・関数・クラス等々、各々が1つの目的のために用意されており
    それぞれの意図を汲み取る事ができると言う事


    ③後々変更し易いこと


    プログラムは何度も書き換えられる可能性があり
    ①②の要件を満たす場合、例え大きな変更があったとしても
    パズルのように組み替える事が容易にできると言う事




    これら大きく分けて3つの項目が
    美しいコードの特徴と、各々に関する大まかな説明です。



    一般的にプログラミング学習において、多くの初学者がはじめに取り組むものは
    プログラミング言語における基本構文理解です。


    その言語では条件分岐やループ処理といった機能を実現する上で
    どのようなキーワードが必要なのか、どのような約束事があるのか、などを学びます。



    しかしここで問題なのが
    彼らの多くが基本構文を学習した後“美しいコードを書くことの重要性”を学ぶ事なく
    そのまま各々のプロジェクトに取り掛かろうとする事です。



    原因としては基本的に教育機関(専門学校, 大学等)を含め
    こういったことを教える講義、オンラインコース等の絶対数が少ないと言う事があります。


    自主性に任せられている面もあることから
    本腰を入れて勉強する人がとても少ないんです。



    しかも、もっと悪いことは、このことが起因して
    多くのプログラミング初学者が今後コードの書き方を軽視する傾向にあるということです



    美しいコードの書き方について学ばないプログラマは平気で美しくないコード
    即ち「悪いコード」を量産します。
    こうして量産された悪いコードは時間とお金をいくらでも貪り取っていくため
    現場のプロフェッショナルなエンジニアから極端に嫌われる対象となっています。


    なので基本を勉強している初心者の段階から
    美しいコードを書くことは全てのプログラマが実践すべき心得であり
    持っておくべきモラル
    と言うことを理解し、勉強しておく事は大切なんです。



    一方でここまで読んでみて

    でも美しいコードは書かなくともプログラムとして機能するのであれば
    それでいいんじゃない?
    美しいコードを書くよう毎回心掛けていたら、時間がいくらあっても足りないよ。


    という意見もあるかもしれませんね。



    確かに、正しい構文さえ記述できていれば
    プログラムとして問題なく動作しますし
    時に自分のコーディング方法でプログラムを記述する方が
    高速に作業を進められることもあります。



    でもここで加えて伝えたいことは
    美しいコードを書く事ができるようになれば
    将来のあなた自身と、その同僚の両方に
    とても多くの恩恵をもたらしますよ
    」という事です。


    氷山の一角ですが
    具体的には以下の様な恩恵が受けれます。

  • ① 自他共にプログラムを読む時間・理解する時間・メンテナンスする時間を最適化できる
  • ② ①の結果としてチームでのプロジェクトを円滑に進める事ができる

  • 美しいコードを書く事について、苦労が伴うことは確かです。
    しかし必ずそれ以上のリターンがあるんです。




    美しいコードの書き方



    それでは”美しいコード”を用意するために
    具体的にどの様な事に注意しなければならないのか要点のみ少し紹介していきます。


    意味のある名前を付けよ


    プログラミングを学習し始めると、ファイル名に始まり
    ディレクトリ名、変数名、関数名、クラス名…. etc
    至る所で名前を付ける機会があることに気がつきます。



    こういった場面においてもっとも大切にすべきことは
    「意図が汲み取れる名前を付ける」ということです。



    プログラミング初心者の時期は変数名・関数名・クラス名といった
    名前まで気が配れないことが普通でしょう。



    初めは思い付きで決めてしまう事が多いかもしれません。



    しかし命名規則を学び、訓練していくことで
    自然と適切な名前を付けることができるようになります。


    クラスの名前は名詞で定義


    クラス名にはAccountやCustomerといった
    名詞もしくは名詞のフレーズを付けるべきです。

    動詞は避け、名詞で定義すると良いでしょう。



    メゾットの名前は動詞で定義


    メゾット( クラス内で定義される関数)には、customerPaymentやaccessRecord、getNameといった動詞もしくは動詞のフレーズを付けるべきです。



    関数に着目する




    極限まで小さく作れ


    関数定義を行う上で最も心得ておかないといけない事は
    以下項目2点です。

  • ① 1つのタスクに特化している事
  • ② そのタスクを可能な限り少ない最小のコードで実現する事
  • まとめると
    「最小限の機能を守った小さな関数を作れ」という事です。
    関数を洗練すればする程、エラーの数を減少させることができます。


    これを実現するには
    「1つの関数は1つの機能以外は徹底して排除すること」が大切です。


    具体的な例としては
    ・ある土地の面積を求めること
    ・求めた面積分の土地の価格を計算すること

    をプログラミングしたい場合
    これら2つの計算は別々の関数で行うということです。



    だらだらと20行も30行も1つの関数に長く書くことは好ましくありません。
    一つの指標として、20行を超える関数は見直すこと。
    これを徹底する事で関数を簡略化しより洗練されたコードを書くことができるでしょう。




    引数の数は最小限に抑える


    引数の数は少ないに越したことはありません。
    出来るだけ少なくする様にしましょう。

    原則として3つ以上の引数を渡すことは好ましくありません。



    コメントを付ける




    コメントを書くことは大切です。しかしもっと大切なのは
    「コメントを書かなくとも他人が理解できるコードを書くこと」です。


    例えば、ポスターを使ったプレゼンテーションなどにおいて
    同様の教育を受けた事があるかもしれません。


    「あなたがそこにいて説明を付け加えなくとも
    そのコード自体が何を目的として書かれた者であるのか
    他者が容易に理解できる。」


    これこそが好ましいという事です。


    コメントを残すのは最終手段であり
    目的ではない
    ことを心に留めておきましょう。




    定期的にメンテナンスを行う



    これは補足ですが
    読者に読まれ続けるブログ記事を維持するにはリライトが書かせないように
    美しいコードを実現するには定期的なメンテナンスが要求されます。


    やはり
    「書きっぱなし」と言うのはどの世界でもよくない事です。




    まとめ



    美しいコードを書くことは簡単ではありません。
    熟練したプログラマですら難しいことです。



    しかし意識して目指すことが何より大切です。



    プログラミングの目的とは「コンピュータにある動作を実現させるために命令を伝えること」ですが、
    同時に人間にもその動作を正しく理解させる目的もあるのです。


    自分の趣味で自分だけが見るプログラムであるならば
    美しいコードを書く努力をしなくても良いです( した方が何倍も徳がありますが)
    しかし多くの場合、高い確率であなたが書いたコードは他人が見ます。



    それ故に
    リマインドになりますが美しいコードを書いてモラルを守りましょう。

    モラルのないコード ➡︎ 誰も読みたくない&理解できない ➡︎ 無価値 です。

    本来プログラミング学習をすることと美しいコード技術を学ぶことは
    セットであるべきというのが僕の考えで、



    早いうちに
    時間を掛けてでも、今の自己流のコードの書き方を改め
    美しいコードを書く知識と技術を身に付けると、
    今後エンジニアとしての仕事にがよりスムーズに進むでしょう。




    今回は以上です。
    ではでは





    人気記事【初学者必見】効率的なプログラミング勉強方法を紹介します







    このエントリーをはてなブックマークに追加

    data-ad-format="rectangle" data-ad-format="rectangle"

    1 コメント

    返信する

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

    某国立大学大学院(理系)に所属しています。 最近の趣味は人工知能関連の論文を読む事で 研究ではComputer Vision周りを中心に活動しており、 サイドワークとしてデータ分析の業務に関わっています。 本ブログはこれまで筆者が学んできた様々な知識の中から 有益だと思えた情報のみをまとめたものです。 内容は個人の見解であり、所属する機関と関係するものではありません。 Research: is related to Computer Vision Hobby: is to study Artificial Intelligence / Machine Learning.