Ognacの雑感

木漏れ日々

目次

Blog 利用状況

書庫

ギャラリ

1メソッドは 50行以内

開発標準に1メソッドは50行以内という規約があったりします。
この基準の真意は、50行という数字には意味がなく、この制限を設けないと、べた書きをする開発者が続出するから、仕方なく、設定していると聞きマした。
センスのある開発者は、1メソッドか何百行になっても、読みやすいのでずか、センスがない人は、数十行でも読みにくいです。
1メソッドn行以内という制約を設けることで、べた書きする人が少ないなるそうです。
その趣旨の適用のために、センスのある開発者に「n行制約」で泣いて貰っていると聞きます。
 センスある開発者からみると、「なんで、彼らに足を引っ張られな、あかんねん」という言う分もあるのですが、比率的には、無センスの人が多いのだそうです。プロジェクト運営を円滑にするって難しいものです。
同様な規約に、ループのネストは二重まで、とか、再帰禁止とか継承は二重までとかあるそうです。
「無センスなプログラマの存在を排除せよ」は暴論で否定しますが、健全な開発体制に与える負の要素も感じます。
この矛盾感は解消されないのでしょうね。オフショアで特に感じました。

投稿日時 : 2008年11月21日 1:22

Feedback

# re: 1メソッドは 50行以内 2008/11/21 9:07 R・田中一郎

>同様な規約に、ループのネストは二重まで、とか、再帰禁止とか継承は二重までとかあるそうです。

ありえない・・・orz
レベルに合わせた規約を作って、開発者をクラス分けすればいいのに。

上のレベルの人が作ったソースは、下のレベルの人は扱えないかもしれないけれど、それはあまり問題じゃない気がします。

# re: 1メソッドは 50行以内 2008/11/21 9:21 じゃんぬねっと

私は「ひとつのメソッドにふたつ以上の機能や動作を盛り込まないこと」という規約を作ったことがありますが、センスのない人はその「機能」と「動作」の単位がわからないので結局ぐだぐだになってしまったことがあります。
理想を言えば下位レベルの底上げをしたいですが、その人たちのセンスや脳みそまでは容易に変えられません。
だから誰でも確実に理解できる数値でコーディング規約を制定して縛りをするわけです。

そもそも上級者には規約を作る必要さえないです。
究極的に言えばコメントすら書く必要がありません。

もし底上げを狙うならレビューをして個人指導するのが良いと思います。
コーディング規約存在そのものが足かせにしか感じないのであれば、コーディング規約をどうこうレベルの低い人がどうこう言う前に、動くところを動かないとダメでしょう。
私はあきらめていますので、レベルが低いと思っても文句さえ言いません。
正直この地方のレベルの低さには疲れました。

# re: 1メソッドは 50行以内 2008/11/21 10:29 えいる

三項演算子禁止って言うのもあるらしいですねー
嫌な世の中です:-(

うちもコーディング規約設けてるけど、行数とかネスト数とかは制限してないなぁ
でも実際1メソッドの行数も、ループのネストも、メソッドに分割しちゃえば回避できるんですよね。
ひどい分割いくらでもできるのが怖い!

# re: 1メソッドは 50行以内 2008/11/21 10:43 ちゅき

XPが目指すような理想はやっぱり上級者同士の方が効きそうですよね。
#教育目的で、なんてやるとお互い不幸になれそうな気が(単によく知らないだけですが^^;)

>この矛盾感は解消されないのでしょうね。オフショアで特に感じました。
こちらからバラツキを制御しにくいのでモヤモヤがありますよねぇ^^; 

# re: 1メソッドは 50行以内 2008/11/21 12:50 Ognac

下を引き上げる手立てのコメントがεπιστημηさんの所に、付いてましたが、正論ですが、そのコストを何処が負担するのかが、問題になったりします。元請けは、開発者の所属元だと主張するでしょうし、所属元は、人材育成は蔑ろになりがちだし、プロジェクトにその予算があるのは少ないし、
マイナス要因が目立ちます。

>私はあきらめていますので、レベルが低いと思っても文句さえ言いません。
うわ! じゃんぬねっとさんが諦めてる
悲しい現実

# re: 1メソッドは 50行以内 2008/11/21 13:16 ちゅき

結局、面白さに気づいた本人が頑張るしかないんですよ、たぶん。面白みを感じない人は淘汰されていくしかないんじゃないかなぁ^^;
#と、淘汰される側のできない子がほざいてみましたorz

# re: 1メソッドは 50行以内 2008/11/21 14:30 Pasie.

 goto文悪玉論に似てますね。

 なんていう私は
 n行制約
 継承禁止
ともに推進派だったりします。(汗

 できたものをスーパーマンが保守してくれるんだったらいいんですけどね。そうでない以上、保守者が理解出来ない芸術コードを書かれても困るわけです。それでも動けばまだよいのですが。

 そして良くこういう事を言うと、50行はokで51行はだめなのか。とか言われるんですが、だめなものは10行でもだめだし、okなものは10000行でもokに決まってるだろ。と応えるようにしています。結局はgoto文と一緒です。

# 護送対象はだれ? 2008/11/21 14:53 菊池 Blog

護送対象はだれ?

# re: 1メソッドは 50行以内 2008/11/21 17:37 Hirotow

>できたものをスーパーマンが保守してくれるんだったらいいんですけどね。そうでない以上、保守者が理解出来ない芸術コードを書かれても困るわけです。それでも動けばまだよいのですが。
ごく普通にベンダのガイドラインにしたがったりオブジェクト指向で設計をするだけで、前衛芸術扱いされるから困るのです。
確かに長いサブルーチンも複雑な継承も嫌いです。
でもそれを防ぐための手段もデザインパターンやガイドラインとしてほぼ確立されているのです。
このため当たらし物好きのコードのほうがむしろぶれがなかったりします。
また、新しいやり方を覚えるのは一時的ですが、泥臭い作業は継続的なので、どちらが効率的かは明らかです。

# re: 1メソッドは 50行以内 2008/11/21 18:09 Ognac

底辺を引き上げるのが、業界にとっては、良いことで、推進するのは正論です。
ところが、企業の意思決定は、長期幸福より、目先の短期幸福を選択しがちなのは、悲しいです。、
「協力会社員や外注を教育するのは、損失だ」と平然とノタマう請負う会社もあったりします。
それはそうと、センスの有無は読みやすさとなって現れると思う出す。
テクニック的にエレガントでも読みにくいソースは、保守工程ではマイナスです。
CやPerl使いのなかには、エレガント性を追及する人が、いますが、他人が保守する場合、読めない庫とがります。
規約に「読みやすいソースを書け」とあっても、「誰がどのレベルで読みやすいか」の規定は難しいです。
徒弟制度というか、会社の文化に依存する、泥臭い部分が多い気がします。
センスがある人は、放っておいても身に付きますが、並の人は、悪癖が身に付く前に、教育する必要がある気もします。
どこが施すのかという問題は難しいですが。

# re: 1メソッドは 50行以内 2008/11/21 19:07 Pasie.

> どちらが効率的かは明らかです。
 そうですか?
 仮にそうであったとして、誰にとっての効率でしょう?

>新しいやり方を覚えるのは一時的
 これもそうですか?
 仮にも一時的で済むとは、とても思えないわけですが。

>防ぐための手段もデザインパターンやガイドラインとしてほぼ確立されているのです
 確立していて問題がないのなら、PM他が規約を作ることもないわけですね。なぜ50行ルールや継承禁止、3項式禁止が言われるようになったか、真剣に考えてみたらいいのではと思います。

# re: 1メソッドは 50行以内 2008/11/22 0:17 Ognac

なぜか、TrackBackが張られないので、手動で張ります
http://blogs.wankuma.com/jitta/
http://blogs.wankuma.com/episteme/archive/2008/11/21/161829.aspx

# re: 1メソッドは 50行以内 2008/11/22 1:13 Ognac

>真剣に考えてみたらいいのではと思います。
私見ですが、技術者視点で見ると、不満や愚痴の材料になりますし、酒の肴になります。
しかし、επιστημη さんとこのコメントにも書かせて貰ったのと重複しますが、SIer経営者や管理職に聞いたところでは。
経営者の企業論理で考えると「作業効率と品質の妥協点のなかので最大の利益点」を求めるんだそうです。
そのためには、一定の制約や制限を課したほうが、製品のばらつき度が小さく、総じて安定する。結果として、品質が安定する。.......このように、説得されると、反論できなくなります。
クラス禁止や再帰禁止は、底上げに工数を割くより、底辺に合わした方が、総コストが安いのでしょう。
Jittaさんが仰っているように、べたに作っても下手に作っても、業務要件を満たすだけに、厄介です。
保守要員の問題もカラミますが、こちらは、以前に議論になったので、今回はパスします。
3項式禁止は理解に苦しみますが。

# re: 1メソッドは 50行以内 2008/11/22 1:38 Pasie.

>3項式禁止は理解に苦しみますが。
 あくまで規約制定側の立場で話をしますと。
 まず、if~else、で記述した方が概ね理解しやすいからです。
 次に、演算式中に条件分岐があることが理解を難しくしています。
 あと、マルチステートメント(複文)禁止とかも同じ仲間でしょうか。関数の引数に関数を書くのとかも。つまり、2つ(以上)のことを一つの文で無理矢理書くのではなくて、分けて書いたらいいのでは?ということです。

# re: 1メソッドは 50行以内 2008/11/22 12:24 Ognac

>マルチステートメント(複文)禁止とかも同じ仲間でしょうか
うーん。 イチャモンを言いたくなりますね。
a = sin( func(2,4) + cos(30) + func1(1,2,3))
とマルチステートメントとなにが違うねん....構文が独立してないからOKなのかなぁ ???

# re: 1メソッドは 50行以内 2008/11/22 12:45 biac

> 作業効率と品質の妥協点

そして、 ソフトウェアの発注元は、 コードの品質を計測しろと言わないのであった (--;

# …すると、 妥協点がドコになるか? 言わなくてもわかりますよね? (;;

# re: 1メソッドは 50行以内 2008/11/22 23:05 Pasie.

> 構文が独立してないからOKなのかなぁ ???
 そこを究極にしていくと、e = a+b*c-d、も分離しろになねるんですけどね。この式でそんなこと言う人は皆無だと思うんですが。バランスが重要ということではないかと思います。
> a = sin( func(2,4) + cos(30) + func1(1,2,3))
 こんな式になる理由としては、私の考えでは3つあって
 1.数式そのもの
 2.一行で書くのはかっこいい (FizzBuzz問題での感想)
 3.func(2,4)の答えを入れる変数名を考えるのが面倒
だと思ってます。1は仕方ない、2は教育し直せば何とかなりそう、だけど3はセンスとボキャブラリの問題なんで難しいかなあと思ってみたり。




# Good article! We will be linking to this great post on our site. Keep up the good writing. 2019/04/05 20:15 Good article! We will be linking to this great pos

Good article! We will be linking to this great post on our site.

Keep up the good writing.

# Heya! I just wanted to ask if you ever have any issues with hackers? My last blog (wordpress) was hacked and I ended up losing months of hard work due to no data backup. Do you have any methods to prevent hackers? 2019/05/04 8:08 Heya! I just wanted to ask if you ever have any is

Heya! I just wanted to ask if you ever have any issues
with hackers? My last blog (wordpress) was hacked and I ended up losing months of hard work due to no data backup.

Do you have any methods to prevent hackers?

# I am regular reader, how are you everybody? This post posted at this web site is in fact fastidious. 2019/05/07 6:15 I am regular reader, how are you everybody? This p

I am regular reader, how are you everybody? This post posted at this web site is in fact fastidious.

# I visit every day a few blogs and sites to read posts, but this web site offers quality based writing. 2019/05/09 13:16 I visit every day a few blogs and sites to read po

I visit every day a few blogs and sites to read posts, but
this web site offers quality based writing.

# You ought to take part in a contest for one of the highest quality sites on the internet. I will highly recommend this web site! 2019/07/09 11:35 You ought to take part in a contest for one of the

You ought to take part in a contest for one of the highest quality sites on the internet.
I will highly recommend this web site!

# Its like you read my thoughts! You appear to know a lot approximately this, like you wrote the guide in it or something. I feel that you could do with a few p.c. to pressure the message home a bit, however instead of that, that is great blog. A great re 2019/07/23 23:23 Its like you read my thoughts! You appear to know

Its like you read my thoughts! You appear to know a lot approximately this,
like you wrote the guide in it or something.
I feel that you could do with a few p.c. to pressure the
message home a bit, however instead of that, that is great blog.
A great read. I will certainly be back.

# Its like you read my thoughts! You appear to know a lot approximately this, like you wrote the guide in it or something. I feel that you could do with a few p.c. to pressure the message home a bit, however instead of that, that is great blog. A great re 2019/07/23 23:24 Its like you read my thoughts! You appear to know

Its like you read my thoughts! You appear to know a lot approximately this,
like you wrote the guide in it or something.
I feel that you could do with a few p.c. to pressure the
message home a bit, however instead of that, that is great blog.
A great read. I will certainly be back.

# Its like you read my thoughts! You appear to know a lot approximately this, like you wrote the guide in it or something. I feel that you could do with a few p.c. to pressure the message home a bit, however instead of that, that is great blog. A great re 2019/07/23 23:25 Its like you read my thoughts! You appear to know

Its like you read my thoughts! You appear to know a lot approximately this,
like you wrote the guide in it or something.
I feel that you could do with a few p.c. to pressure the
message home a bit, however instead of that, that is great blog.
A great read. I will certainly be back.

# Its like you read my thoughts! You appear to know a lot approximately this, like you wrote the guide in it or something. I feel that you could do with a few p.c. to pressure the message home a bit, however instead of that, that is great blog. A great re 2019/07/23 23:26 Its like you read my thoughts! You appear to know

Its like you read my thoughts! You appear to know a lot approximately this,
like you wrote the guide in it or something.
I feel that you could do with a few p.c. to pressure the
message home a bit, however instead of that, that is great blog.
A great read. I will certainly be back.

# I constantly spent my half an hour to read this web site's articles everyday along with a cup of coffee. 2020/06/16 12:53 I constantly spent my half an hour to read this we

I constantly spent my half an hour to read this web site's articles
everyday along with a cup of coffee.

# This is a good tip particularly to those fresh to the blogosphere. Simple but very precise info… Thanks for sharing this one. A must read post! 2020/08/08 18:46 This is a good tip particularly to those fresh to

This is a good tip particularly to those fresh to the blogosphere.
Simple but very precise info… Thanks for sharing this one.
A must read post!

# This website was... how do you say it? Relevant!! Finally I have found something that helped me. Thanks a lot! 2020/08/27 19:05 This website was... how do you say it? Relevant!!

This website was... how do you say it? Relevant!! Finally I have found something that helped me.
Thanks a lot!

タイトル  
名前  
Url
コメント