これからコードを書く人に絶対やって欲しいこと★3

■ このスレッドは過去ログ倉庫に格納されています
1仕様書無しさん
垢版 |
2013/06/04(火) 22:43:46.92
もしくはやって欲しくないこと
先輩方のアドバイスをください

前スレ
これからコードを書く人に絶対やって欲しいこと★2
http://kohada.2ch.net/test/read.cgi/prog/1365269189/
2013/06/14(金) 00:05:33.14
>>279
典型的なわざとらしいコードだね。

フォーマッターにかければ解決するようなもの
何の問題にもならんわ。
2013/06/14(金) 00:06:01.98
循環的複雑度の低いメソッド同士が内容結合してると、それは糞コード。

はい、論破。
2013/06/14(金) 00:06:41.63
>>280
わからないことがあるのなら、努力したまえ。
2013/06/14(金) 00:08:56.89
ひょっとしてあれか、循環的複雑度の定義も理解しないまま平均平均言ってたのか?
2013/06/14(金) 00:12:22.03
>>265-266
途中までまともだったのに、最後の二段落で台無し。
2013/06/14(金) 00:16:25.05
ム板の宿題スレとVBAスレで、外部コード共有サービス使ってコード貼ってる奴の
コードを見れば、循環的複雑度が低いのに糞コードな例を思う存分堪能できます。
2013/06/14(金) 00:17:34.86
>>285
じゃあ最後の二段以外に、いいレスって言えばいいよ。
その他は間違ってないんだからさ。
2013/06/14(金) 00:18:30.93
>>286
じゃあ堪能したコードを教えて下さい。
そのコードの循環的複雑度はもっと下がるでしょうから。
2013/06/14(金) 00:20:31.99
>>287
最後の二段落以外もそれほど良い内容ではない。
2013/06/14(金) 00:20:53.60
ああ、自分が読めないコードが糞コードの人か
2013/06/14(金) 00:21:23.66
>>288
自分で見に行けよ
2013/06/14(金) 00:22:34.55
承認要求が強すぎる困ったちゃん
2013/06/14(金) 00:25:12.69
循環的複雑度に凝集度と結合度が加わって、この話題で500までは行くかな。
スレ全部食い尽くすかもしれん。
2013/06/14(金) 00:28:23.50
ほらな。
結局、コード出せといっても
だせない。

あ、わざとらしいコードはいらんよ。
2013/06/14(金) 00:32:16.63
なにがほらなだよ。
まず結合度をググってこい、アホ。
2013/06/14(金) 00:35:39.54
論破されまくってるのに気づかない馬鹿
2013/06/14(金) 00:38:03.29
凝集度の話が出てるようなので、
今度は循環的複雑度ではなく、LCOM、計測してますか?w

http://www.itmedia.co.jp/im/articles/0510/07/news106.html

LCOMってのは言語によって計測しづらいんだよな。
参照しているメソッドやフィールドの数で計算するから
動的型付け言語だと、何を参照しているか(実行時に決まるので)わからない。

Javaだったらこの記事のようにプラグインがあるんだが。
2013/06/14(金) 00:39:55.94
>>281
わざとらしかろうがクソには違いあるまい。
実際には良かれと思って分割されたり抽象化されたりした関数やクラスが山と連なる、とかだろうけど。

で、細切れにされた関数をインライン展開とかで復元できるフォーマッタってあんの?
レス行数考慮して改行は潰したが、そこは本題じゃないし。
これの健全化は自動処理できたとしてもフォーマッタの仕事じゃないだろ。
リファクタリングツールの仕事で、つまり糞コードの改修という仕事。
2013/06/14(金) 00:43:13.04
>>297
LCOMは初めて知ったな。

そのリンクの前編の頃にツール名がでてたけど、ほとんどJava用ばっかりだな。
ウェブ系でよく使われる言語ののツールって無いんだろうか?
2013/06/14(金) 00:47:03.73
>>299
> ウェブ系でよく使われる言語ののツールって無いんだろうか?

しらない。ぶっちゃけウェブ系の言語(だいたいが動的型付け言語)では
厳密な計測は不可能だと思ってるけどね。

こういうメトリクス計測ってのはソースコードを静的に解析する。
つまり静的に情報がわかれば計測できるが
そうでなければ計測できない。

だから、動的型付け言語の発展に将来はないと思っているが
それはまた別の話だな。
2013/06/14(金) 00:48:51.67
どんなメトリクスでも共通して言えることは、あるコードがそのメトリクスで良い数値を
出しているからといって、必ずしも良いコードではないということ。

メトリクスを収集する目的は、悪い数値を出す悪いコードを検出するのと、そのコードを
改善したときの進行具合を測るのに止めるのが良い。
2013/06/14(金) 00:52:22.84
>>300
動的型付け言語でも静的解析はできるでしょ
2013/06/14(金) 00:56:38.69
>>301
> どんなメトリクスでも共通して言えることは、あるコードがそのメトリクスで良い数値を
> 出しているからといって、必ずしも良いコードではないということ。
誰も違うとは言ってないのに、なぜかここだけゴリ押しする馬鹿
言わなきゃ困る理由でもあるのかね?
2013/06/14(金) 00:59:29.44
>>302
出来るできないの二元論ではなく
どれだけできるかという話。

どれだけ静的解析できるかの話をすれば
動的型付け言語は、静的型付け言語に比べて
圧倒的に少ないと言わざるをえない。

LCOMの計算式を見ればわかるが、
・着目しているクラスのj番目のメンバ変数
・着目しているクラスのメンバ変数の個数
・着目しているクラスのメソッドの個数
・メンバ変数Ajにアクセスしているメソッドの個数

こういう値を変数として利用する。
だが動的型付け言語では、着目しているクラスが
動的に決定されるので、着目しているクラスの情報が得られない。
2013/06/14(金) 01:01:54.29
>>303
>>258
2013/06/14(金) 01:04:35.91
>>290
これは言えてると思う
英語に拒絶反応示す人だと、簡単なメソッド名すら理解できなくて
実装のほうにジャンプして中確認しないといけないことに文句言ったりする
メソッド名見るだけで意味はわかるのに、それができないってやつ

実際の職場とかだと糞いメソッド名な事もあるけど、このスレで出てるのって、そういうレベルの話ではないしな
2013/06/14(金) 01:05:17.99
このコード出せうんたらの流れ、前スレでも見たな
その時はコテついてたけど
2013/06/14(金) 01:05:57.13
>>305
これほど明確な疑問文ですら、自分が何を問われてるかも分からんのか?
2013/06/14(金) 01:09:22.07
>>304
俺はLCOMというのは初めて知ったが、説明を読む限りクラス内に閉じたメトリクスなので、
RubyやPHPでも計算できると思うけど。
もちろん、循環的複雑度も計算できる。
2013/06/14(金) 01:11:44.45
>>308
言わなきゃ困る場合なんてそうそうない。
普通はただ単に言いたいから言うだけだ。
そして、今回の発言動機は>>258の存在。
2013/06/14(金) 01:16:15.69
動的型付け言語が何なのか知らないバカも登場し、ますますスレは混沌となっていくのであった
2013/06/14(金) 01:19:52.64
静的解析の静的がわからないんじゃなかろうか
2013/06/14(金) 01:21:16.55
>>303>>308
> 誰も違うとは言ってないのに
247「アホが「複雑度が低くてもクソなコードはある」とか言いだすんだよ。」
すなわち「複雑度の低いクソなコードはない」と言っている
258「あるというのなら、出せばいい」「複雑度が低くても糞なコード。」「さあどうぞ。証明してくれ。」
すなわち「複雑度が低くても糞なコードは出てこない」という前提でレスしている
> 言わなきゃ困る理由
以上のようにバカは何処にでもいるので、蛇足だろうと過信すべきでないという警告は必要である
必要とする者が要る以上、俺はいらないから不要ってだけの理論は通用しないんだよ
既にあるものを不要としたいなら、必要を上回る欠点なりなんなりが無いとね
2013/06/14(金) 01:24:20.73
>>310
そうか、ならよかった。
だが、>>258も含めて皆そんな事分かった上での話だから
お前がわざわざでばってきて、ゴリ押しする必要はないよ。
すっこんでいて下さい
2013/06/14(金) 01:24:40.63
君達、基本が出来てないな。
循環的複雑度が低い糞コードは
基本の逆をやればいい。
つまりオブジェクト指向で、
処理で分割したり、
構造化で変数のスコープを無視して、
グローバル変数を使いまくったり
すればいい。

循環的複雑度が高くても問題ない
コードは、分岐が多くても
基本に外れてない物ならいい。
つまり、項目数の多い入力チェック
などだ。

誰かも書いていたが、結局モジュール
分割の基本を知らずに循環的複雑度
がどうとか言っているのが問題
なのだろう。
2013/06/14(金) 01:24:58.45
あら、また馬鹿がw
2013/06/14(金) 01:29:17.36
>>314
君が>>258ならそれで良いが、もし違うのなら>>258が俺が言ったことを理解しているとは言い切れないだろう。
そして俺は>>258は、俺が言った程度のことすら理解していないと見える。
2013/06/14(金) 01:29:43.41
>>314
258はどう考えてもそんなことすらわかってないだろw

同僚に258みたいなのがいて
「わかってて冗談言ってるんだ…きっとそうだ…そうに決まってる…」
とか現実逃避でもしてんのか君
2013/06/14(金) 01:32:37.70
おっと、二人称まで同じ似たような発言が・・・。
まあ、俺はまた暫く黙るから安心してくれ。
2013/06/14(金) 01:40:07.65
>>258って平均君でしょ。
平均理論が認められないもんだから暴れてる。
2013/06/14(金) 01:52:25.97
循環的複雑度の人が言う循環的複雑度の低いソースと高いソースを
俺らにサンプルとして出すよう言ってから24時間経ってるのに出てないのね。
なんか書き込みはすごいことになってるけど。
2013/06/14(金) 01:56:08.87
>>319
俺もこのあたりで諦めようかと。203の一覧には
5,1〜4の何れかの存在を認めない馬鹿
ってのを追加しないとだな。
2013/06/14(金) 02:27:07.14
レスする価値があるような相手、内容であるか見極めてからスレに投稿する、ということを、
これからコードを書く人には絶対にやって欲しいな。
2013/06/14(金) 03:54:22.34
途中全く読んでないけど、レスが50も増えたと思ったらまだやってたのか
たぶん名無しで書いてるけど中身はおじゃばだな…

このスレも終わったな
2013/06/14(金) 04:33:31.11
読めば判るが、おじゃばはさらに斜め上に飛んでるから多分別口だ。
2013/06/14(金) 09:27:56.97
ここに書かれてるのは量産型おじゃばか
2013/06/14(金) 13:14:40.54
絶対やって欲しいこと
スルー能力を鍛えて欲しい。
2013/06/14(金) 15:34:58.73
Warning とか Exception はスルーしないでほしい。
2013/06/14(金) 18:19:36.66
>>328
それに付け加えて、静的解析ツールが出力するError/Warningも極力取って欲しいよね。
自分では問題無いと分かってる場合でも、他人がツールを使うと、それらが問題あるかどうかなんてわからないから。

htmllintで-100点とか出してて、<div>の対応がおかしいことに気づかない奴とか良くいるし(Webアプリを
引き継いでlintかけると大量のメッセージが出る場合多し)。
2013/06/14(金) 18:34:57.16
(スルー力鍛錬中)
331循環的複雑度
垢版 |
2013/06/14(金) 22:17:56.64
おじゃば降臨祭り実施中
2013/06/15(土) 01:46:33.40
単体試験の基本も知らずに、試験の自動化を勧める人。
オブジェクト指向の基本も知らずに、
DIコンテナやデザインパターンを勧めるの人。
今度はモジュール分割の基本も知らずに、
複雑度測定ツールを勧める人か?

何で基礎が欠落してるのに、高度な
事に詳しいのだ?
ニセコンサルか、提灯記者か?
2013/06/15(土) 02:37:57.52
>>328-329
警告無視する奴結構多いよなぁ
必要な無視もあるけど、そういうのはプロジェクトの設定の見直しとかも考えればいいのに
ただひたすら無視して警告出したままソース管理にコミットしてくるオッサンとかめっちゃいる

IDEの出してる警告が気にならない人間がどうも理解できないわ
これからコード書く人は、警告は問題がある可能性の通知だから
どうか無視せず適切な対処をとるようにしてほしいな
2013/06/15(土) 04:14:22.02
煽っていくスタイル
2013/06/15(土) 04:14:57.96
>>333
マーカー発動
2013/06/15(土) 08:39:41.32
プログラマに最も向かないのは、意外にも神経質すぎる奴だったりする
2013/06/15(土) 08:43:50.39
というより神経質になるべき箇所を正しくコントロールできる
無能なやつは全てに於いて神経質、要するに根っからの性格だな
2013/06/15(土) 11:08:04.74
未熟なプログラマは経験豊富なプログラマへの対抗心が常にあり、身の丈も考えず背伸びをしようとする。
未熟ゆえ、ググった情報が正しいのか間違っているのか判断が付かず鵜呑みにして、もはや洗脳状態に。
なので理解してるふりをして間違った解釈で人に伝える、致命的な伝言ミスを実務でもやらかすことが多い。
対抗できないと悟ってもプライドが許さず、何かしらで蹴落とすことを考えはじめる。

経験が豊富なプログラマは、あまりハマることもなくスムーズに仕事を遂行できる。
わからないことがあっても、割と素早く正しい情報だけを検索できる。
未熟なプログラマにあれこれ教えるのは好きだが、背伸びしてくる人間には容赦ない。

だから仕事を教えて欲しかったら、本当の自分を隠すなってことだな。
2013/06/15(土) 11:09:38.23
ごくごくまれにバケモノじみた能力のプログラマがいるけど、そういうのは別次元。
興味範囲が広く、一度興味を持つととことん追求するから知識が広いだけでなく深い。
ダビンチのようなオールラウンダータイプに多い、ここまでくると天性の領域。
成功経験だけじゃなくあらゆる失敗も自ら試して経験にする。
発想が自由自在で時々人が考えつかないようなアイデアを実行する。
自由かつ正しく組み合わせられるため、とにかく仕事が尋常じゃなく早い。
まさにプログラマをやるために生まれてきたような人間。

但し納得いくまで追求しきると熱が一気に冷めるので、飽きっぽく見える。
仕事のことしか興味がなく、なにも考えてない時間が勿体なさすぎるので
切羽詰まってるわけでもないのにメシを食べながら仕事したり常に何かを考えてる感じ。
なので普通の人には付き合いにくいイメージがある。
2013/06/15(土) 11:11:19.26
> 未熟なプログラマにあれこれ教えるのは好きだが、背伸びしてくる人間には容赦ない。
これは人間的な意味でレベル低いタイプじゃ
先に書いてる奴と同類じゃね
2013/06/15(土) 11:38:10.09
できるプログラマーはこんなスレで人間性的な物を語ったりはしない、かな
2013/06/15(土) 12:53:32.67
>>340
仕事教えても覚えようとしなかったり
教わったことをさも独学で身につけたように持ち込むタイプの人間に
ずっと寛大でいられる人は、たしかに尊敬できる

>>341
できないプログラマーは冷静に性格分析されるのを嫌う、よね
2013/06/15(土) 15:02:16.18
スレタイくらい読み解ける日本語力を身につけて欲しい。
344仕様書無しさん
垢版 |
2013/06/15(土) 20:57:16.84
>>339
これはまさに天才だったころの俺。
飽きっぽく見えるというか実際飽きる。

> なので普通の人には付き合いにくいイメージがある。
上手に付き合えばいいのに仲間内だけでしか付き合わないからそう見えるんだよな。

>>340
>>176
> レベルが低い奴は、レベルが低いということすら自覚できない。
> 循環的複雑度を計測するのは簡単だから、とりあえずやってみろと言うしか無い。
> 自分らのレベルが低いとか高いとかどうでもいい、とりあえずやってみて、その結果を受け入れろ。

循環的複雑度を計測した結果を受け入れろとか意味わからんし。

機械語レベルの命令を組み合わせれば長くなるけど
高機能な言語では短くなる。
だから言語やライブラリが違うのに単純比較はできないはずだが。
2013/06/15(土) 21:10:43.52
>>344
お前のほうが意味わからん。

誰も機械語の話なんかしていないし、
言語やライブラリが違う場合の話もしていない。

仮に機械語や言語やライブラリが違っていたとしても一緒。
単純比較できる。

なぜなら、「言語によってシンプルに書ける」ということは実際にありえる話だし、
「ライブラリを使った結果シンプルになる」というのも実際にありえる。

最終的には複雑なのをシンプルにする=テストが簡単になるようにすることが目的なので
ライブラリを使って、シンプルにしてテストが簡単になるのは卑怯でもなんでもない。
それが現実的な開発で用いられている手段。
346仕様書無しさん
垢版 |
2013/06/15(土) 21:11:08.74
飽きるのが悪いかというと、そんな悪いことでもない。
無駄に頭を使わないことは重要だ。

頭の悪いやつに頭のことを言っても分からないから運動で例えるといい。
早く走れるからと言って一日中走っていられるのかと。
がんばればいくらでも早く走れるのかと。
短距離で走れる速さで長距離は走れない。

だけど、使う筋肉の違う運動なら続けて出来る。


今朝の番組でボディビルダーが出てた。
週5で鍛えていると言ってた。
筋肉をつけるには程よい運動と養生が必要だ。
無駄に負荷をかけ続けても壊れるだけ。

だから睡眠時間を削らせてまで働かせるやつは殺人鬼。
2013/06/15(土) 21:13:01.18
循環的複雑度が低くても、テストしやすいとは限らないよ。

って、何回言わせるんだよ。
2013/06/15(土) 21:22:10.27
>>347
それを具体的なコードで示せって、何回も言われてるだろ。

そのコードも複雑度を減らして、もっとテストしやすくしてやるから。
2013/06/15(土) 21:29:04.13
複雑度が高い関数ってのは
一つの関数で複数の仕事をしているから。

例えば二つの仕事(n、m)をしている関数では、
そのテストの組み合わせはn×mになる。

これを単純な二つの関数nと関数mに分けることで
テストの数もn+mになる。
2013/06/15(土) 21:48:52.16
同一の値に対し境界値の異なるメソッドを副作用を含む形で呼んでるとか、
複雑度の低いメソッドが複雑度が高い外部のメソッドを呼んでる場合とか、
そういう事情でテストの複雑さがメソッドの複雑さに比例しない事はあるかな。
ただ、比例しないからといって相関がないわけではない。
循環的複雑度が高いコード⊆テストが複雑なコード。

そもそも、循環的複雑度は悪いコードを見つける一助であって、
テストの複雑さを推定する指標でもなければ、
良いコードを規定する唯一の指標でもない。
2013/06/15(土) 21:55:19.89
まだ具体的なコード出てないな。
やっぱり逃げたか。
2013/06/15(土) 22:11:56.16
続きはこちらへ↓

循環的複雑度
http://kohada.2ch.net/test/read.cgi/prog/1371301844/
2013/06/15(土) 22:13:43.20
戻って参りました!
2013/06/15(土) 22:17:09.35
循環的複雑度の計測っていうのは、
これからコードを書く人に絶対やってほしいことだもんな。
このスレであってるよ。
2013/06/15(土) 22:20:22.62
計測することにデメリットはないしな。
確固たる自信があって数値のほうが間違ってるといえるのなら
そうなんじゃない?

でも高い数値を出す人は、たいてい技術力が低いから
そんな自信は勘違い以外ではありえない。

まあ、いいからとりあえず計測しな。
話はそれからだ。

その数値とコードを示せば、正しい解釈をしてあげよう。
まあ殆どがコードが汚いという結果だろうけどね。
356仕様書無しさん
垢版 |
2013/06/15(土) 22:21:23.90
計測してどうすんの?
無理やり行単位で分割すんの?
2013/06/15(土) 22:28:12.42
>>356
正しい方法で修正するんですよ。
あたりまえじゃないですかw
358仕様書無しさん
垢版 |
2013/06/15(土) 22:29:28.69
>>357
正しい方法って何を基準にするの? 循環的複雑度?
2013/06/15(土) 22:39:10.96
>>358
えーとね。循環的複雑度は単に複雑度を図るだけ。
正しい方法ってのは、コードがやってることをの意味を考え
正しい場所にコードを配置すること。
何が正しいかは設計によるが、処理の責務を考えれば答えが出る。

計測して高い数値が出た=一つの関数で複数の責務を持っているってことだから
正しい所にコードを配置する=複数の責務を分割するから
自ずと循環的複雑度は下がる。
2013/06/15(土) 22:41:05.19
続きはこちらへ↓

循環的複雑度
http://kohada.2ch.net/test/read.cgi/prog/1371301844/
361仕様書無しさん
垢版 |
2013/06/15(土) 23:08:10.00
>>359
> 計測して高い数値が出た=一つの関数で複数の責務を持っている

ふーんたとえば?
2013/06/15(土) 23:18:00.39
よくあるのが

function foo() {
 // ○○の処理
  :

 // △△の処理
  :

 // □□の処理
  :
}

みたいなもの。
コメントからわかるように、処理が内部で分かれているのに
それを一つの関数でやろうとしている。

こういうのが、ひとつの関数で複数の責務を持っているし、
もちろん複雑度はそれぞれの処理の合算になるから計測して高い値が出る。

こっからは、なんとかの処理をするなんてコメントを書きたくなったら、
それは関数にすべきと考えたほうがいい。
2013/06/15(土) 23:28:49.07
>>362
こうやれば関数増やす必要なくね?
再利用できない関数はこれでよくね?

function foo() {
 // ○○の処理
 do{
  :
 } while( false )

 // △△の処理
 do{
  :
 } while( false )

 // □□の処理
 do{
  :
 } while( false )
}
2013/06/15(土) 23:32:20.68
>>348
テストしづらい例:
・メソッド内で直接現在時刻を取得し、その時刻に基づいて判断している場合
・メソッド内で直接物理デバイスをオープンしている
・メソッド内でConcrete Classをインスタンス化している
・マルチスレッドのテスト
等々。

循環的複雑度が高いコードをリファクタリングすれば以前よりテストはしやすなるのは
その通りだが、必要十分条件のように言われると、それは違うと言わざるを得ない。
2013/06/15(土) 23:40:17.41
> 必要十分条件のように言われると
誰もそんなこと言っていない。

だが概ね正解だろうな。
循環的複雑度が高いのはクソコード。
2013/06/15(土) 23:44:38.22
>>365
言ってないならそれでいいんだが、何故だか、そんなことあるわけないからコード出せと
いう奴がいなくならない。多分一人なんだと思うが。
2013/06/15(土) 23:49:31.55
>>363
変数と引数と戻り値、そしてテストコードを忘れている。

たしかにその例には書かなかったが、実際には変数と引数と戻り値がある。
関数は普通シンプルなものから少しづつ処理を付け加えて複雑になる。

最初は○○の処理しかなかったものにたいして、△△、□□を付け足す。
その時、たいていは○○で計算した結果を△△、□□で使う。
結果、グローバル変数と同じように、どこで何を触っているかわからなくなる。

次第に変数の使い方はごちゃまぜになり、分けようと思った時に簡単に分けられなくなる。
分けようと思ったときに、君に言うように都合よく分けられることは少ない。
修正の影響を避けてまた少しコードを追加する。ということを繰り返す。

最初のうちに、関数に分けておくという習慣を持っていれば、このような歴史を辿らなくて済む。

そして重要なのがテスト、関数の中で小さく分けられていても、その単位ではテストできない。
単純に呼び出せないというものもあるし、doなんて使ったやり方では関数のインターフェースである
引数と戻り値が明確にならない。
2013/06/15(土) 23:50:32.90
>>366
そりゃ、コードでなきゃいなくならないだろw
ちゃんとコード出して示してやればいいんだよ。

なんでそれが出来ないのさ?
2013/06/15(土) 23:55:34.78
>>368
>>364の内容でコードが思い浮かばない人とは議論しません。
2013/06/15(土) 23:56:51.11
続きはこちらへ↓

循環的複雑度
http://kohada.2ch.net/test/read.cgi/prog/1371301844/
2013/06/15(土) 23:59:56.89
>>368
わざわざ頭の悪いコード書きたくないんじゃないかな。
2013/06/16(日) 00:01:50.42
>>364

http://kohada.2ch.net/test/read.cgi/prog/1370760670/6

6 名前:仕様書無しさん[sage] 投稿日:2013/06/15(土) 21:37:15.97
なかなかレスが来ないから先に書いておくわ。

それは「テストがしにくい処理」であって
「テストがしにくいコード」じゃねぇよ。
2013/06/16(日) 00:03:12.30
>>369
http://kohada.2ch.net/test/read.cgi/prog/1370760670/6

テストがしにくい処理と
テストがしにくいコードを
ごっちゃにしている人いるよね。
だからコード出せって言ってるのに。
2013/06/16(日) 00:23:12.22
例えば
bool foo()
{
now = systemtime(); // systemtime()はマシンの時刻を戻す
return now.hour < 9;
}
みたいなことなんだが、これがテストしづらい処理なのかテストしづらいコードなのかに
カテゴライズすることに何の意味があるんだろうか。
2013/06/16(日) 00:23:30.83
>>373
出したとして理解できるの?

>>367
> 関数のインターフェースである
> 引数と戻り値が明確にならない。
そら関数じゃないんだから引数や戻り値はないさ
だけど変数をできるだけ狭いスコープ内で宣言するようにしたらいいんじゃないかな。
そしたら残った変数が全体で使う変数だよ。
2013/06/16(日) 00:24:33.01
理由が書いてない(納得出来ない)
コーディング規約はゴミだ。作るな。従うな。

初心者のためのコーディング規約は糞だ。
(難しくてわからないから)○○機能は使わないこと。

糞な規約の例として
三項演算子は使わない。
クラスは作らない。
継承は使わない。
等がある。
2013/06/16(日) 00:42:53.30
>>374
> カテゴライズすることに何の意味があるんだろうか。
すごく重要。

テストしにくいコードは、リファクタリングで直すことが出来る。
リファクタリング=処理の内容は変わらない。

処理の内容がどうこうではない。処理はやらなきゃいけないんだからやるしか無い。
同じ事を実現する処理ならば、複雑ではない書き方(コード)にした方がいいだろ。
処理ではなくコードが重要。

http://kohada.2ch.net/test/read.cgi/prog/1331998580/27 (当時日時に注意)
> 27 名前:仕様書無しさん[sage] 投稿日:2013/06/15(土) 21:39:58.61
> そのコードがテストしにくいかしやすいかが焦点なんじゃねーかよ。
> だから具体的なコードを出せと言ってるのに
> 処理だけ言ってコード出さないとか、頭悪いな。



>>375
> だけど変数をできるだけ狭いスコープ内で宣言するようにしたらいいんじゃないかな。

普通に関数でいいじゃねーか。
なんでテストしにくい方法にこだわる?
2013/06/16(日) 00:47:20.96
他人に見せるコードでタブ文字を使って桁合わせすると、タブ幅不一致の時に表示が崩れる。
インデントはスペースでもタブでも良いが、どちらか片方に統一しておかないと以下同文。
なので、桁あわせはスペース、インデントはタブ文字またはスペースのどちらか一方が良い。
読みやすいインデント幅が人による事を考えるとタブ文字インデントが望ましい。

但し、人に読ませる気のないコードや文法的にインデントルールが決まっている場合は除く。
最悪フォーマッタ通せば問題ないしね。
2013/06/16(日) 00:49:43.69
>>374
って複雑度が低いがテストしにくいコードってだけで、

複雑度が高いものは、テストがしにくいってことの
反論になってないんだが?
2013/06/16(日) 00:54:49.07
>>379
> 複雑度が高いものは、テストがしにくいってことの
> 反論になってないんだが?

>>363 のコードってテストしにくい?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況