• ベストアンサー

美しいコードを書くとはどういうことでしょうか

こんにちは。 最近、プログラミングを始めました。 スクリプト言語はPythonです。 いろいろな本を手にしてみると『美しいコード』という表現に出会うことがあります。 これはどういうことでしょうか。 私の理解では、例えば、改行や空白、インデントなど 一定のルールに従ってプログラムを書くのだと思っていました。 そうすると、どなたが書いても同じような仕上がりになり 『美しい』と言われるコードはどういうものか見当がつかなくなってきました。 『美しいコード』とは、ルールに注目することではなく 同じ命令なら、長々と書くよりもより短く書くという 文書能力のことでしょうか。 ありがとうございます。

noname#244865
noname#244865

質問者が選んだベストアンサー

  • ベストアンサー
  • t_ohta
  • ベストアンサー率38% (5085/13293)
回答No.1

人によって考え方の違いはあるでしょうが、私が考える美しいコードは ・インデント等の体裁が整っている ・簡潔で無駄の無い処理になっている ・他人が読んでもすぐに理解ができる と言う事だと思っています。 特に「他人が読んでもすぐに理解ができる」と言う事が大事で、仕事でプログラムを書いていると当然ながら複数人で仕事をするので、自分の書いたプログラムを他の人が修正したり、他の人が書いたプログラムを自分が修正することがあります。 時には過去に作られたプログラムを改修するプロジェクトがあったりしますが、仕様書がちゃんと残っていなかったり、当時の担当者が退職していて居ないなんて事はよくあることです。 他人の書いたコードを読んで理解する力はエンジニアとして必要なスキルだと思いますが、それ以上に他人が読んでもすぐに理解できるコードを書けると言う事が重要なスキルだと思っています。 私は、使途が分かりやすい変数名や関数名を付けるとか、複雑な処理を無理矢理一纏めにするのではなく簡潔な処理に分解して段階を追って処理するように心がけています。

noname#244865
質問者

お礼

ご回答どうもありがとうございました。 自分が読むだけではなく、後日誰が読んでも分かるように 書くということですね。そうすれば短く簡単に・・・となり 美しいですね。 やはり、どの世界でも人の為と考えるといいものができるのだと 思いました。 どうもありがとうございました。

その他の回答 (3)

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.4

御存じかもしれませんが、念の為。 Pythonを使うだけで「字下げ」は綺麗になります。 というか、綺麗にしないと、正しいプログラムになりません。

noname#244865
質問者

お礼

お忙しい中、ご回答いただきましてありがとうございました!

回答No.3

PythonじゃなくてC言語をとりあげた本ですが、 プログラミングの基礎を養うのにとてもいいと思うので、 以下を読むことをお勧めします。 「Cプログラミング診断室 ~ うつくしく健康なプログラムのために」 http://www.pro.or.jp/~fuji/mybooks/cdiag/index.html#mokuji もう20年前に出版された本で、15年前に絶版になりましたが、 筆者の厚意で本の内容をWebサイトで公開してくれています。 その後、10年前からまた改訂新版として発刊されたようですが、 改訂前の版はWebサイトの公開を続けてくれています。 この本では、「汚いコード」というのがどんなのか、 どうして汚いのかをたくさん説明してくれてます。 普通の本は、きれいでわかりやすいコードしか載せませんから、 汚い/きれいってどういうことなのか、普通の本を読んでもなかなかわかりません。 汚いものがどういうものかわかれば、何がきれいかわかるようになります。 これを無料で読めるんだから、ありがたいことです。

noname#244865
質問者

お礼

とても丁寧なご回答をどうもありがとうございました。 早速目を通してみました。 C自体はわかりませんが、やはり長いと見づらいですね。 貴重な情報をどうもありがとうございます。

  • Ogre7077
  • ベストアンサー率65% (170/258)
回答No.2

以下の書籍を読むことをオススメします リーダブルコード より良いコードを書くためのシンプルで実践的なテクニック http://www.oreilly.co.jp/books/9784873115658/ 個人的には、こっちの方がより「美しい」気がしますけれど ハッカーのたのしみ 本物のプログラマはいかにして問題を解くか http://www.amazon.co.jp/dp/4434046683

noname#244865
質問者

お礼

貴重な情報を教えていただき、どうもありがとうございます。 現在の自分のレベルでは、数多くあるPC関連の中から自力で良書を探し出すのはとても難しいです。 早速、注文しました。届くのが楽しみです。 どうもありがとうございました。

関連するQ&A

  • Pythonで使われているインデント記法の先例

    Pythonというプログラミング言語では、インデント情報を用いてプログラムの構造を示します。このインデント情報によって構造を示す記法は、Pythonが最初に使ったものではなく、先例があるという話を聞いたことがあるのですが、それを示す情報はありませんでしょうか?

  • HTMLコードを一定ルールでインデント・改行してくれるソフトは?

    既に書いてしまったHTMLコードを一定のルールでインデント・改行してくれるソフトを探しています。(Win-XP用) 先日、 「HTML整頓くん 0.10β 」 http://www.vector.co.jp/soft/win95/net/se382567.html というフリーソフトを見つけたのですが、何から何まで改行してしまうのでちょっと具合が悪いのです。(<br>とか<b>は改行したくない) どなたかいいソフトご存知ありませんでしょうか? DreamWeaverやホームページビルダーにそんな機能があるというならそれでも結構です。 よろしくお願いいたします。

    • ベストアンサー
    • HTML
  • プログラムソースって一行で書いても良い?

    プログラミング言語って一行の終わりを示すマークとかあったりしますよね。 表示する文章も改行を示すマークを入れないと改行されないし。 HTMLとかも改行は<br>とかつけたり、ブロック要素で囲むとかしないと改行されません。 逆に言うと一行で書いてもこれらのマークを付けておけば、命令として認識するし、改行したいところで改行させるということができるってことですよね。 だとしてら、もしかしてプログラムのソースって、後で読み返すことを考えなければ一行で書いてしまっても、ちゃんと動くと言うことなんでしょうか? そういえば、例文などを紹介しているサイトを見ると <input type="text" name="<?php echo "hoge"; ?>"> とか書かれてたりしますもんね。 最近、PHPの教科書を読んでるんですが、やたらとソースを改行したり、スペースを空けたりしていますが、試しに詰めてみるとちゃんと動きました。 もちろん、半角スペースを空けないと命令として認識されないものもありますが、そういうのを除けば、スペースを全て詰めて、改行も無しで一行でかいたとしても、プログラムというのはちゃんと動くんでしょうか? 改行させたり、スペースを空けたり、インデントしたりというのは、あくまでプログラマーが見やすくするためだけのものであって、プログラミング言語の仕様としてはどちらでも良い?

  • 文字コードも改行コードも変更できなくていいので、

    文字コードも改行コードも変更できなくていいので、 すでにサーバーにアップされているテキストファイルを、 ブラウザから編集できるCGIスクリプトを探しています。 削除機能等、余計な物ばかり付いている物しか見当たらないので、 パール言語に詳しい方は、ソースをおしえてください。 よろしくお願いします。

    • ベストアンサー
    • CGI
  • プログラミング言語が何か教えてください><

    プログラミングのソースコード(?)を見つけ、いざ打ち込んでやってみよう!となったのですが、これが何言語(FORTRAN?PYTHON??C??)なのか分からなくてどうすればいいのか困っています>< プログラミングにお詳しい方、お助けください>< ちなみに、プログラミングに関してはほとんど何もわからない情弱男です。

  • python を使って SNS 作成

    現在、pythonを学習中のプログラミング初心者高校生です。初級者にわかりやすいとのことでpython勉強し始めました。しかし、スクリプト言語にはphp perl rubyなどがあるので僕の選択肢が正しかったのか不安になってきてしまいました。 とりあえず今のところpythonとhtml,cssの勉強をしています。その後javascriptなどを学ぶつもりです。 そこで質問があります (1)Pythonを使った場合sns作成の、最善な方法(直線的に、どの言語を学び具体的にどのように作っていくべきか) (2)そもそもpythonではなくそれ以外のスクリプト言語の方がSNSを作るのに向いているのか  またその場合どのような手順で進めるべきか *僕が作りたいのはアメーバピグのようなゲーム要素は取り入れないつもりです どうかご教授宜しくお願いします!

  • WORD: タブやインデントを使わない同僚

    3~5名のチームで仕事をしています。 Word文書を共有フォルダで作成・管理しているのですが、私以外の人たちがWordのタブやインデントを使っていません。 他の人の作成した文書を加工する場合、改行やスペースが沢山入っているため、改行や文字空けの位置を変えるたびにそれらを削除していかなければなりません。 私の作成した文書を他の人が加工すると、改行やスペースを沢山追加されてしまいます。インデントの位置もメチャメチャなので、おそらく使い方が分からないのだと思います。 なんとかしてタブやインデントの便利さを伝え、チーム内で統一フォーマットを利用することで業務の効率化を図りたいと思っています。 複数の作業者間でWord文書のフォーマットを決める場合、どのような進め方をすればよろしいでしょうか? 私自身、詳細なWordフォーマットを決めている職場で働いたことがないため、ヘタなルールを持ち込んで現場を混乱させてしまうのを恐れています。 シンプルで守りやすく、ブレが生じにくいルール設定方法を教えていただけないでしょうか?

  • TeraPadで見えない文字コード

    TeraPadでXMLを作成し、通常TeraPadから視認できる範囲では問題がないのに、IEなどで表示させようとすると、エラーが出ることがあるようです。見えない文字コードを挿入して一見問題がないXML文書が整形式でなくなるようにできるのでしょうか?半角全角の空白やTAB改行文字などがオプションで表示できことは知っています、この問題ではありません。キーボードからそのようなコードを入力することはできますか?あるいはバイナリデータを貼付するなりしてその様な文書にすることはできますか?

  • パソコンのCPUがプログラミングを読むというのがい

    パソコンのCPUがプログラミングを読むというのがいまいちイメージがつかめないんですが、ちょっとひねくれたような言い方になってしまいますが Ryzenにレンズとカメラが着いていてそれがプログラミングの0と1や16進数やアセンブリ言語やpythonを読むわけじゃないですよね? CPUがプログラミングコードを読むとはどういうことなんでしょうか?

  • pythonの編集仕様のいろいろ

    pythonのプログラミングを少し始めているのですが、以下のような問題に直面しました。一番最初にhello world! を表示するものです。 hello.pyを作ってpython hello.py とすると実行するようです。 hello.pyの内容ですが、あるサイト(以下の画像)では、 print "Hello, Wordl!" とありますが、私の環境では動かず、さらにサイトを検索して、 print ( "Hello, Wordl!" ) が正しいとのことで、こちらは問題なく動作しました。 また、このprintコマンドですが、編集画面で左詰めでないとダメで、コマンドの前の空白(インデント)があったら正しく動作しないとのことです。 このようなささいな違い、またプログラム編集上の作法の問題とかを見ると、この言語の習得は難しいように感じてしまいます。アルゴリズムの完全性とか、文法上の問題が完全にクリアになってもなぜが動作しない、という問題に直面しそうなのですが。自分の知らない何かのしきたりに違反しているという状態で、しかもそれが本質的でないように見える言語仕様(先のインデントがダメという問題)というのであれば、後からいろいろ出てきそうなのですが。例えば、”コマンドは第一文字が大文字でなければならない”とかです。数百、数千行のコードを書いたりすると、間違いの可能性のあるところが目に見えないところにいっぱいという感じがするのですが。バグフィックスというのは絶対に絶対に間違いない、と断言してそれでいてうっかりミスが見つかるわけです。”間違っているかもしれないな”じゃバグフィックスできません。 それでいて割と巷間ではpython人気という感じがしているのですが。 pythonのどこがいい、ということなのでしょうか。私が考えている困難を補う効用があるのでしょうか。 私の環境はanaconda 3.5です。バージョン毎にかなり違うのでしょうか。