Island Life

< リリース直後が最も開発効率が高い説 | 関数型言語のリストと命令型言語のリスト >

2015/04/01

見ながら書く

開発スタイルのせいなのか、それとも短期記憶が小さいのかわからないけど、 自分は「関連情報を見ながら書く」ということが非常に多い。例えば関数を書いてる 時に、その呼び出し元と、それから書いてる関数から呼び出している関数の ソースを同時に開いて見ながら書く、とか、 複数の入力に対するREPLの出力を(REPL窓を2分割して)眺めながら さらに関数を修正する、とか。

だもんで、「書いている箇所でない場所を自由に広く見られる」「(書いているバッファではなく) 見ているバッファ内を自由に移動する」という機能が欠かせない。

Emacsだと、「今書いている関数を呼んでいる関数」が同じファイルにある時に 画面を分割して一方で見たい箇所、もう一方で書いてる箇所を表示するのが数キーストローク でできるんでありがたいんだけど、XCodeとかで思うようにできなくてじれったく 感じる。(Assistant editorのデフォルトを「今見てるファイル自身」に するのってカスタマイズでできるのかな?)

あと、「今書いているまさにその場所」というのを見る必要ってあまりなくて、 どっちかというと参考に参照している部分の方を広い視野で見たいんで、 「複数窓を開いて、参考にしている窓を手前に広く表示し、裏にあるウィンドウに タイプする」という操作も多用するんだけど、 どういうわけか最近のUIはフォーカスした窓を手前に持ってくる動作が デフォルトになってて困る。Linuxは新しくインストールしたらまずこの動作を 変えるんだけど、OSXとWindowsではどうやるのか知らない。

似たような話で、IDEの補完で出てくるウィンドウが、 今書いている箇所の数行先のまさに参照したい部分を隠しちゃっていらつく、 ということもよくある。補完は有難いんだけど、隠さないところに出してほしいなあ。

今風の開発スタイルについていけない、ロートルになったってことなのかもしれないが… みんなこれで使ってるのかなあ。それともカスタマイズしてる?

Tag: Programming

Past comment(s)

インドリ (2015/04/03 05:44:28):

自分の場合2パターンの開発スタイルを、適宜切り替えて行っています。 前提:テストプログラムを先に書きます。メモ用UMLも簡潔に書いてあるときも多々あります。 その後・・・ 1:1つの関数内に広範囲の処理を一気に書いてしまってから、後で処理を細かく区切って清書します。 2:そもそも細分化してしまいます。処理を細分化して考え、短期記憶に必要な容量を少なくしてから、後で統合してしまう。

自分も複数のウィンドウを開いて、コーディング作業をやりにくいので、そういう事態にならないように自然とそうなっています。 全体的にいうと、脳内に情報をそろえてからプログラムする派です。 ただ、考えるときは、複数のウィンドウを広げて並べて、ジーとみています。 ・・・ うん?まさか、これエイプリルフールネタじゃないよね?

shiro (2015/04/03 22:01:16):

エイプリルフールネタじゃないです。私は小さく関数を区切るのが好きなんですが、そうすると呼び出し-呼ばれの関係が多くなるので余計に参照したい箇所が増えるんですよね。

関数内のローカル関数が書ける言語ならそれでも参照箇所を近くに置いたまま書けるんですが、それが許されない言語だとなお「同じファイルで見たいところが画面外」というケースが増えて。

多分、ヘッダと本体を2画面で見せるというようなデフォルトは、ヘッダでシグネチャ見ながら書けばいいじゃん、という意図だと思うんですが、いじってる時は複数の小さな関数のシグネチャを変えまくるのでむしろやりにくい…とここまで書いてきて、もしかして私のスタイルが「粘土こねこね」で形を作ってゆくパターンだからかな、と思いました。

インドリ (2015/04/04 21:05:02):

確かに関数が深くなる時が多々ありますよね・・・ 私も自己流アジャイル開発をしているので、頻繁に変更しつつ、いじくりまわします。このとき頼りになるのは、テストプログラムと設計メモです。設計さえ頭に入っていれば、自分の思考の焦点となっている関数以外は気にする必要がないと考えて、あまり気にしないようにしています。 「この関数深いな・・・でも、オブジェクトの役割が明確だからいいや♪」って感じです。 一度にプログラミングするのは一オブジェクトを原則にしています。 そうすると、思考の拡散が防げます。 私の場合、焦点以外に気にしないようにしているのです。 ただ、もしかしたら、気にしたほうがいいのかもしれないのですが・・・ 設計を考えているときは一度に考えているので、気にしていませんでした。 もしかしたら無意識に、設計とプログラミングを頭の中で切り替えているのかもしれません。

インドリ (2015/04/05 03:14:34):

参考になるかもしれないので、他にやっていることも書きます。 普段はWindowsのVSで、使っている機能は・・・ ・テキストブックマーク ・各種リファクターツール。 ・一時的に、コメントとして参考コード(呼び出し元など)を張り付ける。 ・プライベートソース管理(みんなと共有していない自分だけのソース管理ツールを用意)を駆使して大胆なこねこねコーディング。 ・紙に印刷してみる。 大体こんな感じです。 それにしても、複数のウィンドウを広げてコーディングやり辛いですよね・・・ マルチモニターにしても、この苦痛は完全には治せない。 開発ツールのインタフェースにも進化の余地がありますよね。

yamasushi (2015/06/21 06:43:31):

コーディングをしていないので有用な情報にはなりませんが)「見ながら書く」ときに,頭のなかで声を出しているのか,視覚的パターンで処理しているのか。そのあたりの違いは個人差があるのでしょう。(わたしは圧倒的に視覚的です)

Post a comment

Name: