アカウント名:
パスワード:
パッと目の前のソースコードを見ると長い行では200列程度だった。うちスペースインデントが30列程度で、80列表示にしたらほとんどの行が見切れる。以前は画面分割で120列程度で書くことが多かったが、120列もちょいきつい。一応Visual StudioでのC#開発、しかも自分のコードだから比較的冗長で列が長くても分かるという条件だからC++とは話が変わってくると思う。
ところで割と話題になってるのに定量的な議論が欠けてる気がする。GitHubでホストされてるC++のオープンソースプロジェクトでは~行が~%で、みたいないつもの数字はないのかしら?
そこまで深いインデントになるような処理は、関数化するなりして分離したほうがいいと思うぞ。
下請けから20段以上ifやforがネストしたコードが納品されてきたことならあったなあ(さすがに書き直させた)インデント=4文字幅の規約だったから、インデントだけで80桁超えてたのか。
書き直させるのは合法だったんでしょうか?あらかじめコーディング規約などでネストを制限していたとかならともかく、業務委託でかつ仕様を満たしていたとすれば、書き直させるのは、わりと違法性が高いのでは(特に下請法とか)?
コーディング規約はあって、受け入れのレビューをしたのが自分でした。下請けとどういう契約だったのかは当時の自分には分かりませんが(昔の職場での話)、グレーだったのかもなぁ…
規約に反してたなら要求仕様を満たしていないわけで受け取り拒否でしょ。結果として描き直しになるのは違法でもなんでもない。反してなければいちゃもんですなぁ。インデントが80桁超えるコードを許容するコーディング規約ってのがあるとも思えないけど。
ネストは何層までとかいう規約がある方が普通ではないのでは?目安として「いくら程度まで」というのは可能かもしれないけど、それを律儀に守ろうとしてかえって意味不明なコードになることもありそう。
特に最近は C++ ですら初期化リストみたいな物ができたきたから、複雑なオブジェクトの初期化なんかで一気に4,5層くらいのネストは発生しうるから、変に制限がぎりぎりだと、チマチマ関数で初期化するわかりにくいコードになってしまう。
かといってゆるゆるにすればあまり意味がないし。
あと、C# の using 構文みたいな
using (...)using (...)using (...)using (...){ ...}
のはネストに含むのか含まないのか(ぶら下がり文絶対禁止教の方はどうするんだろう?)。
using構文は確実に解放されるわけでないからtry-finallyを使えとかいう謎規約があったけどこれが原因か?
それはコーディング規約に「ブロックは {} 必須」が欲しいところですね。階層が分からなくなり過ぎる。
まあ、今のC#にはusing var構文 [ufcpp.net]があるんでもうusingはネスト要らないですけど。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
ナニゲにアレゲなのは、ナニゲなアレゲ -- アレゲ研究家
200列ぐらい (スコア:0)
パッと目の前のソースコードを見ると長い行では200列程度だった。
うちスペースインデントが30列程度で、80列表示にしたらほとんどの行が見切れる。
以前は画面分割で120列程度で書くことが多かったが、120列もちょいきつい。
一応Visual StudioでのC#開発、しかも自分のコードだから比較的冗長で列が長くても分かるという条件だからC++とは話が変わってくると思う。
ところで割と話題になってるのに定量的な議論が欠けてる気がする。
GitHubでホストされてるC++のオープンソースプロジェクトでは~行が~%で、みたいないつもの数字はないのかしら?
Re: (スコア:0)
そこまで深いインデントになるような処理は、関数化するなりして分離したほうがいいと思うぞ。
Re: (スコア:1)
下請けから20段以上ifやforがネストしたコードが納品されてきたことならあったなあ(さすがに書き直させた)
インデント=4文字幅の規約だったから、インデントだけで80桁超えてたのか。
Re: (スコア:0)
書き直させるのは合法だったんでしょうか?
あらかじめコーディング規約などでネストを制限していたとかならともかく、
業務委託でかつ仕様を満たしていたとすれば、書き直させるのは、
わりと違法性が高いのでは(特に下請法とか)?
Re: (スコア:1)
コーディング規約はあって、受け入れのレビューをしたのが自分でした。
下請けとどういう契約だったのかは当時の自分には分かりませんが(昔の職場での話)、グレーだったのかもなぁ…
Re: (スコア:0)
規約に反してたなら要求仕様を満たしていないわけで受け取り拒否でしょ。
結果として描き直しになるのは違法でもなんでもない。
反してなければいちゃもんですなぁ。
インデントが80桁超えるコードを許容するコーディング規約ってのがあるとも思えないけど。
Re:200列ぐらい (スコア:0)
ネストは何層までとかいう規約がある方が普通ではないのでは?
目安として「いくら程度まで」というのは可能かもしれないけど、
それを律儀に守ろうとしてかえって意味不明なコードになることもありそう。
特に最近は C++ ですら初期化リストみたいな物ができたきたから、
複雑なオブジェクトの初期化なんかで一気に4,5層くらいのネストは発生しうるから、
変に制限がぎりぎりだと、チマチマ関数で初期化するわかりにくいコードになってしまう。
かといってゆるゆるにすればあまり意味がないし。
あと、C# の using 構文みたいな
using (...)
using (...)
using (...)
using (...)
{
...
}
のはネストに含むのか含まないのか(ぶら下がり文絶対禁止教の方はどうするんだろう?)。
Re: (スコア:0)
using構文は確実に解放されるわけでないから
try-finallyを使えとかいう謎規約があったけど
これが原因か?
Re: (スコア:0)
それはコーディング規約に「ブロックは {} 必須」が欲しいところですね。階層が分からなくなり過ぎる。
まあ、今のC#にはusing var構文 [ufcpp.net]があるんでもうusingはネスト要らないですけど。