- ビルド
- 実行可能なファイルを生成すること。機械語やデータの羅列になっていることが多い。ソースコードをコンパイルし、必要な外部ライブラリや初期化コードをリンクする。
- cc,gcc
- コンパイルに使われるコマンド。ソースコードを解析してオブジェクトファイルを生成するのが主な目的。
- リンク
- 機械語のプログラム(オブジェクトコード)をリンクさせること。スタティックリンクとダイナミックリンクがある。
- スタティックリンク
- すべての必要なプログラムを一つのファイルにまとめるリンク。
- ダイナミックリンク
- 実行時に、必要に応じて外部ファイルをメモリに呼び出すリンク。
- make
- 簡単にビルドするためのツールおよびコマンド。Makefileが必要。
- Makefile
- コンパイル対象、リンク対象、処理方法などの手順ををまとめて記述したファイル。
- configure
- Makefileを生成するシェルスクリプト。環境に応じたMakefileを生成する。
- autoconf
- configureファイルを生成するツール。らしい。
リファクタリング
仕事では、時間がなかったり、技術力が足りなかったりして、やっつけでコードを書いてしまいがち。結果、コードが汚くなっていく。コピペの重複コードとか、不適切な変数名とか。
そういうのが積み重なって、コードがわからなくなっていく。それを技術的負債と呼ぶ。とりあえず動いていても、バグ修正や仕様変更、担当引き継ぎのときに苦労することになる。技術的負債を解消することをリファクタリングと呼ぶ。地道にリファクタリングしていくほうが、その時間を新規開発に充てるより多くの場合長期的に得である。
リファクタリングは、まとめてやるととたんに難しくなる。少しずつ、こまめに、毎日やるべき。
大がかりなリファクタリングは、状況を考慮してやるかどうか決定しよう。プロジェクト終了間際にはやる必要がないかもしれない。時間がもったいないうえに、その後コード修正が無いかもしれないから。
とはいえ、リファクタリングは怖い。うっかり変更して、不具合が出るかもしれない。このジレンマを解消するのがテスト自動化。リファクタリング後にテストを行い、すべて通れば思わぬ副作用が(おそらく)ないことを確認できる。
vim ちょっとした繰り返し
使い捨てのちょっとした繰り返し作業は、レジスタにマクロを保存すると楽。
q{register}
で保存開始。q
で終了。@{regiser}
で呼び出し。
たとえば、.erbファイル編集中、コマンドを<%= %>で囲みたいとする。
qaI<%= <ESC>A %><ESC>q
でI<%= <ESC>A %><ESC>
をレジスタaに記録できる。
puts 123 puts 456
の1行目で@a
を入力すると、
<%= puts 123 %> puts 456
となる。2行目を囲むには、2行目でまた@a
としてもよいが、直前のマクロは@@
で再実行できる。少しだけ楽。なので2行目は@@
と入力。
<%= puts 123 %> <%= puts 456 %>
レジスタを使ったマクロは以上。
その場だけでなく、今後も使いたいマクロはにmapしたほうがいいかも。
nnoremap <leader>a I<%= <ESC>A %><ESC>
自分は上のように設定している。\a
で呼び出せる。