【IT】開発スピードを向上させる、読みやすいコードの書き方

■ このスレッドは過去ログ倉庫に格納されています
0001ノチラ ★2017/10/07(土) 20:02:30.16ID:CAP_USER
良いコードとチーム開発

では、自分以外がコードを理解できているのはどんな状態でしょうか。単に「読めればいい」というわけではありません。

「コードを理解する」というのは、変更を加えたりバグを見つけたりできるという意味だ。他のコードと連携する方法も理解しておかなければいけない。
『リーダブルコード』p.3より

チーム開発では他人が書いたコードを改修することも多く、ソフトウェアは全体が連携して動作します。ですので、手を加えられる状態であることが重要と言えるでしょう。

事業の継続性に関わる
これは私の考えですが、コードの質と事業の継続性には深い関係があると思います。

開発が進むにつれてコード量は増大してきます。うまくコントロールしないと扱いづらくなり、プロダクトの開発スピードが低下します。ちょっとした機能追加に多くの時間がかかってしまい、実装する頃には競合サービスに追い抜かれてしまうかもしれません。

本書でも以下のように述べられています。

プロジェクトは巨大になって、すべてを把握できる人は誰もいなくなる。新しい機能を追加するのが苦痛になってくる。コードを扱うのが厄介になって楽しくなくなる。
(中略)
プロジェクトが成長しても、コードをできるだけ小さく軽量に維持するしかない。
『リーダブルコード』p.171より

事業を継続し、プロダクトの成長を持続させるためには、本書で言われているように、できるだけ小さく軽量な、良いコードが必要なのではないでしょうか。
ここからは本の中で取り上げられている理解しやすいコードを書くためのポイントと実際の例をいくつか紹介します。代表的なテクニックを見ていきましょう。

変数と理解しやすさ
まずは変数を取り上げます。すぐに取り組める内容なので、初めにやってみるといいでしょう。
変数名に具体的な情報を込める

変数名にどんな英単語を使うべきか悩むケースは少なくないはず。本書では使う単語を工夫し、分かりやすい名称にするコツを紹介しています。

例えば、「get」はあまり明確な単語ではない。
def GetPage(url);
「get」という単語からは何も伝わってこない。このメソッドはページをどこから取ってくるのだろう? ローカルキャッシュから? データベースから? インターネットから? インターネットから取ってくるのであれば、FetchPage()やDownloadPage()のほうが明確だ。
『リーダブルコード』p.10-11より

意味がはっきり通る単語を変数名に使うだけで、コードを読む人へのメッセージになるのです。
https://employment.en-japan.com/engineerhub/entry/2017/09/26/110000

0117名刺は切らしておりまして2017/10/13(金) 11:18:22.47ID:JYvI94h0
コードをリーダブルにする必要はない。
むしろリーダブルにすべきなのはデプロイだ。

デプロイさえ、リーダブルなら
なんとかなる。どんな処理があって
どんな動きをするかデプロイでわかれば
ソースは直しうる。

0118名刺は切らしておりまして2017/10/13(金) 11:19:29.29ID:IVuL0Zfy
一人に一貫製作させるのが最も効率が良いし、他人が読む必要もない。

0119名刺は切らしておりまして2017/10/13(金) 11:20:00.45ID:JYvI94h0
最低でも構築手順書。
ちゃんとしてるなら自動デプロイ。
このデプロイに全てのアーティファクトとその依存性が含まれていれば
なんとでもなる。

0120名刺は切らしておりまして2017/10/13(金) 11:31:27.82ID:tisvLFWq
>>117
インストーラが作成されていればコードは読めるということ?

0121名刺は切らしておりまして2017/10/13(金) 11:47:47.08ID:KQuiTVvT
クリントン政権と小沢一郎との関係については、
霍見芳浩さんというニューヨーク市立大学の教授が、
「アメリカ殺しの超発想」という著書の中で
お書きになられています。

歴代の政権が「小沢レバー」を利用していたことや、
金権政治を引き継いだのが小沢一郎であること、
また、新党ブームの黒幕も、小沢一郎だと書いてあります。

創価学会のパナマコネクションで有名な本です。


「アメリカ殺しの超発想」(著・霍見芳浩・ニューヨーク市立大学教授) より以下引用↓

----------------------
防衛利権が
金丸、そして小沢レバーの
アメとされてきたカラクリは簡単だった。

自衛隊の制服組のOBと、小沢氏が牛耳る
日本戦略研究センターをみれば、それはよくわかる。
同センターは、設立当時(1980年)は設立者の金丸が会長となり、
同氏失脚後は小沢が会長をつとめている。
小沢会長の下には、理事長として
永野茂門参議院議員(新生党)がいる。(p.200)
----------------------

「防衛利権は、清和会に乗っ取られた!」
という話を、ネットで見かけるんですが、
これこのとおり。↓

【防衛大臣の年表】
http://56285.blog.jp/archives/50473203.html

2007年に表面化した時も、
小沢さんの腹心で、創価学会員の
東祥三さん (加計学園で登場) だとかは
追求に及び腰だったみたいですね。

そして、島本氏が秘書として18年間仕えた
田村秀昭参議が立ち上げメンバーの一人として99年に作られた
「日本戦略研究フォーラム」という組織があります。
山田洋行事件の頃に民間と政治家や防衛庁(当時)のパイプとして存在した
「日本戦略研究センター」の後継組織ですね。
http://blog.livedoor.jp/kumafight/archives/1025515645.html
島本さんは、小沢さんの元秘書で、
田母神さんと逮捕された人です。

http://56285.blog.jp/archives/50814290.html

0122名刺は切らしておりまして2017/10/13(金) 11:47:57.67ID:KQuiTVvT
「アメリカ殺しの超発想」(著・霍見芳浩・ニューヨーク市立大学教授) より以下引用↓

九四年八月七日、日曜日、一般全国紙がないともいえるアメリカで
準全国紙の役割を果たしている新聞の一つ、ニューヨーク・タイムズ紙の
日曜版の投稿論壇が、私の小沢レバー批判を目立つように掲載してくれた。

この内容は、八月五日付の日本の英字新聞、アサヒ・イブニング・ニューズに
コラムとして載せたものとほぼ同じだった。

また、その一部は日本人向けに七月初め以来、
各メディアをとおしてお知らせしていることとも、
大筋は同じものであった。

その要旨は、「クリントン政権は村山政権に対して、
どう対応したらいいか迷っている。

これは、歴代のアメリカ大統領が、
いかに安易に小沢レバーに頼って、日本を操ってきたかの証である」
ということで、続いて「小沢氏はこれまでのアメリカの対日要求を、
自分の利権マシンとして使ってきた。

このようにアメリカは、
金権によって腐敗した日本の政治のパートナーと
なってしまっているのだった」と批判した。(p.208)

しかし、小沢一郎は、独断で三月十七日の期限を待たずに、
モトローラ社の移動電話でアメリカに全面降伏してしまった。

せっかく、盛り上がり出していたクリントンの対日貿易批判だったが、
日本は小沢氏に裏切られたのだった。(p.134)

→(1)携帯電話機の脅迫セールスと「国賊」小沢一郎
http://www.jca.apc.org/~altmedka/denpa-7-1.html

http://56285.blog.jp/archives/50814290.html

0123名刺は切らしておりまして2017/10/13(金) 11:48:28.98ID:KQuiTVvT
「アメリカ殺しの超発想」(著・霍見芳浩・ニューヨーク市立大学教授) より以下引用↓

村山連立政権の成立によって、
一応民主化二年目の幕開けには欠かせなかった
小沢失脚が達成されたのだった。

小沢氏は海部氏を自民党から脱党させ、
中曽根康弘と渡辺美智雄の両氏を、
自民在籍のまま海部支持に引っ張り出した。

この結果、自民党から腐敗の巨悪二人と、
操り人形業界の一人が実質的に消えて、
自民党内部の大掃除が、また一段と進行した。(p.136)

ところで村山政権の成立に困惑しているのがクリントン政権だが、
これは社会党が政権の中枢に座ったせいではなかった。
自民党も社会党も、とっくの昔から政治イデオロギーはポーズだけのもので、
いわゆる五五年体制は、自社の馴れ合いだったことを承知している。

困ったのはこんどの政変で小沢一郎が失脚し、
八〇年代の自民党の中曽根政権から昨年来の細川、羽田の反自民連合まで、
一貫して小沢氏を通して日本にアメリカの要求を次々と飲ませてきた、
こんなに便利だった小沢レバーが使えなくなったことである。

八〇年代に始まり、歴代の駐日アメリカ大使は小沢氏という闇のチャンネルを使って、
通信、建設を筆頭に、日本市場をアメリカに無条件に譲渡させ、
湾岸戦争で一兆五〇〇〇億円もの金を拠出せしめた。

また、ペルシャ湾の掃海に日本の海上自衛隊を派遣したのに続いて、
PKO部隊の海外派兵を、国連の隠れ蓑を使い、
アメリカの思惑通りに小沢氏はしてのけた。

九四年に入ってからは包括協議での日本の全面譲歩、
そして北朝鮮の軍事や経済制裁に日本を駆り出すために、
アメリカは小沢氏に頼ってきた。(p.137-138)

http://56285.blog.jp/archives/50814290.html

0124名刺は切らしておりまして2017/10/13(金) 11:48:45.88ID:KQuiTVvT
しんぶん赤旗で報じられた清水建設の記事

清水建設 コンサル会社と結託
ダム工事資料 事前入手
農水省が調査開始 入札不正の疑い

http://www.jcp.or.jp/akahata/aik4/2005-05-09/01_01_0.html
--------------------------- 
「お宅がとった胆沢ダムは小沢ダムだ。そのことを忘れるな」

大久保被告にこういわれたのは西松建設東北支店長。

「なんだと。急に手のひらを返すのか」と怒鳴りつけられたのは、
清水建設の東北副支店長です。

献金の減額を打診した席でのことでした。

http://www.jcp.or.jp/akahata/aik09/2010-01-30/2010013007_01_0.html
--------------------------- 

同判決は、胆沢ダム建設工事にからむ水谷建設の1億円ウラ献金や 
西松建設のダミー(隠れみの)政治団体による献金も認定しましたが、
小沢被告をめぐっては、これまでも、清水建設のヤミ献金リストの
Aランク(盆暮れに各500万円)になっていたこと、
鹿島からのヤミ献金500万円などが指摘されてきました。

http://www.jcp.or.jp/akahata/aik11/2011-10-07/2011100715_01_1.html
--------------------------- 

東京都築地市場(中央区)の移転予定地、東京ガス工場跡地(江東区豊洲)の
土壌汚染対策工事を受注した建設会社15社中、13社に
都OBが天下りしていたことが26日、本紙の取材で明らかになりました。

http://www.jcp.or.jp/akahata/aik11/2012-02-27/2012022715_01_1.html
--------------------------- 
東京都OB33人天下り
失敗した土地信託のビル管理会社に
社長に副知事・出納長・局長… 幹部がズラリ

http://www.jcp.or.jp/akahata/aik11/2012-03-19/2012031913_01_1.html
--------------------------- 
臨海副都心 埋め立て工事
8割が落札率97%超
99%台の契約も

http://www.jcp.or.jp/akahata/aik4/2006-02-25/2006022515_01_0.html&;#160;
---------------------------
こないだの「横領」と「自殺」についてはこちら。↓
http://56285.blog.jp/archives/50714743.html
小沢一郎と仲のいい関西創価のドンが死去、後任は池田の長男。(三田会つながり)
http://www.news-postseven.com/archives/20150325_311422.html
検察と共に戦った「小沢無罪!」の皆さんと三色旗。
http://ozawa-risen.cocolog-nifty.com/photos/uncategorized/2011/09/23/allinnocent.jpg

0125名刺は切らしておりまして2017/10/13(金) 11:49:01.76ID:KQuiTVvT
「公明党、創価学会よどこへ行く」( 週刊東洋経済 eビジネス新書 ) 

与党協議に関わった横山氏は 
「自民党の北海道連の意見が 
まとまっていなかったこともあるが、 
札幌延伸をリードしたのは明らかに公明党。 

函館に新幹線を上陸させれば、後はなんとかなると、 
『青函(青森と函館)同時開業』を公明党が言い出したときが 
(事態が動き出した)転換点だった。」と振り返る。 

http://56285.blog.jp/archives/49650766.html&;#160;
----------------- 
国土交通省で「天下り」が完全復活した。 

その中心的人物が、石井啓一国交相だという。 

要するに「バリバリの元国交省キャリア」が、 
かつて自分が勤務していた省で大臣となり、 
天下りを復活させたことになる。 

http://www.yellow-journal.jp/politics/yj-00000295/&;#160;
----------------- 
当時、内田氏は 
都議会自民党幹事長として売り出し中だったが、 
今ほどの権力はなく、公共工事の仕切り役は、 
都議会公明党のドン・藤井富雄氏だった。 

藤井氏は、05年に政界を引退し 
仕切り役、調整役の座を内田氏に禅譲。 

(中略) 
老朽化した築地市場の移転は、 
石原氏の前任の 
青島幸男知事の時代に持ち上がったが、 
その構想を推進したのは、 
東京都港湾局長時代の石川雅已・現千代田区長で、 
臨海副都心開発部長として石川氏を支えたのは、 
前川あきお・現練馬区長だった。 

山田氏は、後述するように 
両氏をOBとなっても物心ともに支えた。 

つまり豊洲移転は、 
石原都政の前に都の官僚が 
議会や市場関係者に対する根回しを行い、 
推進してきたのだ。 

http://gendai.ismedia.jp/articles/-/50989&;#160;
----------------- 

公共事業絡みで口利き 

公明・藤井都議が都幹部などに 
コンサルタント会社を紹介 長男が「顧問料」もらう 

http://www.jcp.or.jp/akahata/aik2/2004-01-08/01_02.html&;#160;
-----------------  
創価大学生のおもな就職先 
http://56285.blog.jp/archives/49851484.html

0126名刺は切らしておりまして2017/10/13(金) 12:19:12.67ID:0eUv31yd
コーディングなんてあと10年もしたらAIがやってるだろ
人間のする仕事じゃねーよw

0127名刺は切らしておりまして2017/10/13(金) 12:33:13.10ID:O2Fxk0cV
>>99
コメントは処理の抽象的な概念を書くものであって
処理内容を逐一説明するものじゃないぞ

// i と j を足したものを k に入れる
k = i + j;

みたいなコメントだらけのコードがわかりやすいか?

0128名刺は切らしておりまして2017/10/13(金) 15:24:21.16ID:DtyrUaPC
>>102
たとえば、なでしこ風に消費税込価格を計算するプログラムを書くと:

「税抜価格と消費税率から税込価格を計算します」を表示。
「税抜価格はいくらですか」と尋ねる。
税抜価格はそれ。
「消費税率は何%ですか」と尋ねる。
消費税率はそれ。
税込価格は(消費税率 / 100 + 1) * 税抜価格
「税込価格は{税込価格}円です」を表示。

0129名刺は切らしておりまして2017/10/13(金) 15:26:07.62ID:Vg1zBCWR
>>109
今時 filter、map、fold、each はどの言語にも揃ってるぞ
多少名前の表記揺れあったり、方言もあるが、それはforだって同じだろ

0130名刺は切らしておりまして2017/10/13(金) 15:43:54.94ID:DtyrUaPC
なでしこがもう少し賢くなると、
プログラミング言語をまったく習得したことがない人でも
なでしこのソースコードが何をしているのか
おおざっぱに読解できるようになるのではないか?

0131名刺は切らしておりまして2017/10/13(金) 15:47:29.29ID:ASP+ldIi
>>106
推測可能な名前くらい付けられるだろタコ

0132名刺は切らしておりまして2017/10/13(金) 15:48:58.29ID:+z8HXW9g
>>128
それ単純な例だから簡単に思えるだけで、実際英語ベースでも難しくないだろうが
実運用ベースの案件だと、そんなに単純なことにはならんので確実にコメントは必要になる

0133名刺は切らしておりまして2017/10/13(金) 15:49:50.86ID:ASP+ldIi
>>115
すげぇバカだな
メモリとDBと通信が同じ速さわけねぇだろ、ってことを言ってんだよ

0134名刺は切らしておりまして2017/10/13(金) 15:51:29.66ID:ASP+ldIi
>>113
新人に間違ったこと教えんなアホ

0135名刺は切らしておりまして2017/10/13(金) 16:07:20.69ID:DtyrUaPC
なでしこは、単に日本語ってだけじゃなく、
自然言語にきわめて近い「ハイパー高級言語」という感じ。

ここまで来ると日本語が理解できる人なら、
基本的なコードを理解できる。
必要なのはアルゴリズムやライブラリなどの理解だけ。

0136名刺は切らしておりまして2017/10/13(金) 19:39:59.64ID:mH0ogCjq
do { 忖度(); } while(憲法九条廃止()==法案否決 || 国民の基本的人権停止()==法案否決);

0137名刺は切らしておりまして2017/10/13(金) 20:34:59.89ID:O2Fxk0cV
>>136
この本には do/while は避けて while を使えって書いてある
個人的には賛同しかねるが

0138名刺は切らしておりまして2017/10/13(金) 21:48:29.59ID:HOYxGQvN
>>108
そう思うだろ?
main( ) じゃないけど1関数 38,000行って言うのを見たことあるから世の中にはそんなものもあるんだろうなって思う
(もちろんジョークコードの類いじゃなくてまっとうな製品に入ってるソフトウェア)
世の中はお前さんが思ってるより遥かに広いぞ w

0139名刺は切らしておりまして2017/10/13(金) 21:50:46.21ID:HOYxGQvN
>>118
残念ながら一ヶ月後の自分は他人なんだな w

0140名刺は切らしておりまして2017/10/13(金) 23:38:11.29ID:ZtYsw8Xp
>>138
言語はなんやろ?

まあ俺なら何でもメクラで縦横60x80に分割するけどな

0141名刺は切らしておりまして2017/10/14(土) 00:17:41.90ID:wQqQgnia
>>140
言語はC
まあ詳しくは話せないけど超でかい状態遷移の制御ルーチン

0142名刺は切らしておりまして2017/10/14(土) 00:33:13.83ID:H1xlnaFA
1関数8000行までは見たことがある
しかもC++だ

0143名刺は切らしておりまして2017/10/14(土) 00:45:57.37ID:GwUq6Edi
偏見かもしれないが、ポインタに不慣れな人はCで巨大関数をつくりがち。
他人が用意したサンプルつきのものは使えても、自分ではポインタ込みの設計が苦手な人。
特に組み込みで見られる巨大関数はメモリ管理が下手なものが多いと思う。

0144名刺は切らしておりまして2017/10/14(土) 07:44:22.53ID:J77ZcS+r
>>138
それを手作業でつくった
と信じてるところがカワイイ

0145名刺は切らしておりまして2017/10/14(土) 07:45:38.25ID:J77ZcS+r
はやりの関数プログラミングはqsortの再発明

0146名刺は切らしておりまして2017/10/14(土) 08:57:13.88ID:wQqQgnia
>>144
自動生成ならもっととんでもないものはいくらでもある
井の中の蛙乙 w

0147名刺は切らしておりまして2017/10/14(土) 11:05:26.12ID:Y3MfLyRK
>>33
無名関数のある言語ならば関数名も変数名も同じでありうる
例えばJavaScriptでは以下の二つは同じ

・var GetPage = function (url){...};
・function GetPage(url){...}

つまり「意味がはっきり通る単語を変数名に使う」と述べるだけで関数名についても言及していることになる

0148名刺は切らしておりまして2017/10/14(土) 19:28:03.00ID:onImJ8f5
urlは意味のある名前と言えるのか?

0149名刺は切らしておりまして2017/10/14(土) 20:02:02.75ID:1GiIQKZM
外国人ならコメント無くても一瞬で理解できるコードの塊はあっても
自分たちが作ったものを読むのは日本人だから日本語が無いとコードの塊を一瞬で理解するのは難しい
一見無駄に見えるコメント、特にイフ文の説明も読みやすさを重視するなら入れる意味があることがある。

0150名刺は切らしておりまして2017/10/15(日) 12:25:26.03ID:ST9yVEkd
>>127
同意。
コメントを書く習慣のない人に書かせると大抵こうなるね

0151名刺は切らしておりまして2017/10/15(日) 14:40:41.73ID:PESRo+lT
>>149
コード理解するのに別に外人だからとか日本人だからとか関係ないと思うぞ。

0152名刺は切らしておりまして2017/10/15(日) 15:09:51.79ID:yHjYPebA
コードを要約したコメントも
「なでしこ」だと最小限で済むはず。

コメントだけでコードの見通しがよくならない。
自然言語に近い日本語プログラムだと
アルゴリズムを理解していなくても合理的思考が働く人なら、
そのコードが何をやっているか理解できる可能性が極めて高い。

0153名刺は切らしておりまして2017/10/15(日) 15:12:30.48ID:yHjYPebA
つまり、自然言語に近く設計された日本語プログラミング言語だと
いわゆる日本語でその手順が書かれた「アルゴリズム」がそのまま
コードのようになっているようなもの。
コメントはせいぜいそのアルゴリズムに適切な名称を与える程度で済む。

0154名刺は切らしておりまして2017/10/15(日) 15:30:34.80ID:IfnMZgOZ
checkで始まるメソッド名は禁止にしてほしい。
チェックボックスにチェックを入れるメソッドなのか、内部の値を検証するのか、
修正もするのか、値が妥当な場合の戻り値など必要な情報がぜんぜん読み取れない。

0155名刺は切らしておりまして2017/10/15(日) 15:51:18.15ID:7zpRlkgg
検証はvalidateだな

0156名刺は切らしておりまして2017/10/15(日) 16:36:05.39ID:8seyOGGa
//ここで2を足すがの、本当は1を足すのが正しいと思うけど、
//社長に言われたので、2を足すことにします。

0157名刺は切らしておりまして2017/10/15(日) 16:38:03.50ID:kqswLZ5G
>>156
あるあるw

日付も入れとくと完璧

0158名刺は切らしておりまして2017/10/15(日) 16:51:46.37ID:8seyOGGa
国「チェックなんていらねえ間違える奴が悪い」

0159名刺は切らしておりまして2017/10/15(日) 17:11:37.71ID:5zok2295
関数の引数に詳細な説明コメントを付け
その引数以外を使わない中身にしとけば
ほぼ難解さは回避できる。

でも、そういうモジュール構造に設計するために
気が遠くなるような思考が必要な。

「人間は考える葦である」  −パンセ− より

0160名刺は切らしておりまして2017/10/15(日) 20:26:00.26ID:rox1hBE5
>>154-155
IsChecked〜()、IsValid〜()で桶。

関数名よりも、クラスメンバ関数なら、ちゃんとconst宣言付ける習慣も付けとけよ
と言いたい。 ライブラリ等で一度宣言が出回ったら、後から変更できない。

0161名刺は切らしておりまして2017/10/15(日) 21:38:25.07ID:EJvReZ+7
ダサすぎw
page とか url とかだけでも有り得ないセンスなのに fetch とか download とか素人かよw

0162名刺は切らしておりまして2017/10/15(日) 22:26:14.49ID:zUk6vtSt
どっから持ってくるなんて
欲しい人には関係ないもんな

0163名刺は切らしておりまして2017/10/16(月) 22:44:02.81ID:uGB8Zll5
隠蔽し過ぎも考えものだけどな

0164名刺は切らしておりまして2017/10/16(月) 22:54:18.26ID:H1ZV+fnG
fetchなんてネットじゃなくてメモリからの読み込みじゃないのか
downloadだってネットを意味しないよね

wgetの方が分かりやすいだろうに

0165名刺は切らしておりまして2017/10/17(火) 11:54:43.57ID:3pmGKraJ
>>164
ワイド文字をゲット?

0166名刺は切らしておりまして2017/10/18(水) 08:49:54.43ID:9e+o2Z9c
インターネットから取ってくる時は fetch や download を使えなんてただの俺ルールじゃん
メソッド名で取得元を区別したいなら getPageFromURL や getPageFromDocDB の方が遥かにマシ

それにローカルに置いてたデータをクラウド上のサーバに置くことにしたり
透過キャッシュやプロキシを導入したりしたら
いちいちクライアントのメソッド名を書き換えるの?

0167名刺は切らしておりまして2017/10/19(木) 03:53:47.59ID:F47t47xJ
☆ 私たち日本人の、日本国憲法を改正しましょう。総務省の、
『憲法改正国民投票法』、でググってみてください。
2017年10月22日(日)の衆議院選挙は、ぜひ投票に行きましょう。
平和は勝ち取るものです。お願い致します。☆☆

■ このスレッドは過去ログ倉庫に格納されています