わさっきhb

大学(教育研究)とか ,親馬鹿とか,和歌山とか,とか,とか.

コードをきれいにする試み

自他のプログラミング能力,プログラミング指導能力を向上させるために,何ができるか考えながら,次の記述を見かけました.

コードをきれいにではなく適切に書くことに価値を感じているのは大学だけではない。これは実社会でも起こることであり、残念ながらプログラミングコンテストでも見受けられる。ACM International Collegiate Programming Contest世界大会決勝の採点方法からの引用をご覧いただきたい。

キミのコードが汚い理由 - ITmedia エンタープライズ

全体としては興味深い内容でしたが,上の段落だけ,理解に苦しみましたI can't understand
原文に当たると,

The perceived value of getting the code right instead of making it pretty is not unique to the university. It occurs in industry, and to my dismay it can also be seen in programming competitions. Consider this excerpt on the scoring for the ACM International Collegiate Programming Contest world finals:

IBM - Japan

とあって,これで疑問が解決しました.日本語の「適切に書くこと」が不適切で,「正しい(仕様の通りに動く)コード」と考えればいいようです.超訳をしていいのなら,「とりあえず動くコード」といったところでしょうか.
ところで,上の記事に,コーディング道場というのがリンクされていました.小さめの課題に対して,人が絶えず変わるペアプログラミングで,質の良いコードを作っていこうという試みのようです.ルールの部分を訳してみます.本文中のカッコと区別するため,訳注は角カッコを使用します.

  • コーディング問題[coding challenge]は事前にアナウンスされているものとします.
  • コーディングに使用する部屋は1室で,1台のコンピュータがあり,ビデオ記録されます.[ただし,この部屋と,コーディングをしない観客との間で,コミュニケーションをとることはできるようです.]
  • 発表者[the presenter.単数に注意]は,そのコーディング問題を説明して,観客の中の一人とペアを作って部屋に入り,「乱取り[Randori]」を始めます.
  • ペアの一方は,5分ごとに変更されます.
  • キーボードを持つ人は,常に,何をしているかを説明しながら作業をします.
  • キーボードを持つ人は,観客の誰かがソリから落ちると作業を止め,誰かがその軌道にまた戻れば,作業を続けます.*1
  • 観客は,グリーンバー[テストがすべて通った状態のこと]の状態にあるときだけ,そのデザイン[コードの内容]にコメントすることができます.(レッドバー[テストで通っていないものが一つでもある状態のこと]のとき,観客は質問だけができます.)
  • コードを書くペアは,他の参加者[participants.あとの「15人ルール」から,コーディングに携わった人を指すようです]が現時点のコードの内容に満足していなければ,新しいコードを書くことに取りかかってはいけません.(新しいコードを書き始める前に,コードはよくなるように常にリファクタリングされなければなりません.)
  • 将来的にはTDD (Test-Driven Development)を採用します.
  • 生成されたすべてのコードは,Apache License, Version 2.0に基づいて公開されます.
  • 使用するプログラミング言語は,セッションごとにあらかじめアナウンスされます.
  • 参加者は最大15人までとします.
  • 発表者は,コードの所有者という役を務めます.
  • 実際のコーディングは,小さな作業の繰り返し[small iretations]により行われます.各繰り返しの前にちょっと時間をとって,これから何をするかのプランを立てます.

*1:この文,「交代時に手を止める」ということでしょうか.あるいは,「何をしているか分からない人が出たら,手を止めて説明する」ということでしょうか….