認めたがらない人は多いが、プログラミングはセンスである。そして、世の中のためにならないので、センスのない人はプログラミングに携わるべきではない。
ポーカーの役を判定するプログラムを書くことを考える。普通の人なら、何も考えずに以下のようなロジックを実装するだろう。
これら個別の処理を関数化しておき、順番に呼び出して判定する。場合によっては、手役のオブジェクトを定義しておき、強さを比較するメソッド等を作るかも知れない。
ところが、世の中にはどういうわけか、1回のループの中で
前者が後者より優れていることには、いくらでも説明が与えられる。たとえば、[wikipedia:結合度]による説明だ。後者の実装は、内容結合または共通結合に分類される。明らかにワンペア判定の実装が、フルハウス判定等の結果に影響を与えている。このため、一部を修正した際に他の部分に影響を及ぼしてしまう。また手役ごとに個別にテストもできない。前者ではこのようなことは起こらない。
しかし、ことの本質は後者の瑕疵の分析ではなく、後者のようなコードを書いてくる奴は「頭がおかしい」ってことだ。そもそも彼らは物事のとらえ方が常人と異なる。だから、ちょっとコツを教えたところで、改善することはない。
プログラミングに限らず、世の中には物事のとらえ方が悪い意味で常人と異なる奴が多い。正直、成人になって、そういう根本的な部分がズレている奴が、正常な感覚を取り戻すのはかなり難しい。そもそも、そういう奴は自分が異常だということを自覚してさえいないからタチが悪い。
まあでも、普通のセンスだったらきれいなコードを書けるかというとそうでもないしな。 教育をうけるか自分で勉強するかしないと。
今のはやりは thread[0]{ if (onepair( cards ) ) print ("onepair" ); thread[1]{ if (twopair( cards ) ) print ("twopair" ); thread[2]{ if (threecard( cards ) ) print ("threecard" ); threads.start(); threads.join(); exit'0)
さすがに頭おかしいと思ったけど80コアとかいわれると わからなくはない