概要
ソフトウェア開発において、考慮しなければならない要素のひとつ。多数の人にとって読みやすいソースコードは可読性が高く、読みにくいソースコードは可読性が低いと形容される。
可読性を高めることは、ソフトウェア開発において「作成者以外の人がソースコードを理解しやすい(従って改変しやすい)」、「バグを埋め込みにくい」といったメリットをもたらす。
但し、こういったメリットを無視してわざと難解なソースコードを書いて、自分の実力を誇示するような輩もいる。つまり、俺はこんな難しいコードを書けるんだぞ。すげーだろー。である。とんでもない⑨である。
また、わざと難しくソースコードを記述するといった、コンテストも存在したりする。IOCCC(International Obfuscated C Code Contest)。日本語に訳すと、国際邪悪なCコードコンテストである。
#define P(X)j=write(1,X,1)
#define C 39
int M[5000]={2},*u=M,N[5000],R=22,a[4],l[]={0,-1,C-1,-1},m[]={1,-C,-1,C},*b=N,
*d=N,c,e,f,g,i,j,k,s;main(){for(M[i=C*R-1]=24;f|d>=b;){c=M[g=i];i=e;for(s=f=0;
s<4;s++)if((k=m[s]+g)>=0&&k<C*R&&l[s]!=k%C&&(!M[k]||!j&&c>=16!=M[k]>=16))a[f++
]=s;if(f){f=M[e=m[s=a[rand()/(1+2147483647/f)]]+g];j=j<f?f:j;f+=c&-16*!j;M[g]=
c|1<<s;M[*d++=e]=f|1<<(s+2)%4;}else e=d>b++?b[-1]:e;}P(" ");for(s=C;--s;P("_")
)P(" ");for(;P("\n"),R--;P("|"))for(e=C;e--;P("_ "+(*u++/8)%2))P("| "+(*u/4)%2
);}
このソースコードをコンパイルして、実行すると綺麗な迷路が出現する。
他方、可読性が下がってもいい場合というのも一応は存在する。
前者のようなニーズに向けた「難読化ツール」も確かに存在する。変数を1文字にしたり、関数名や名前空間を意味のわからない文字列にしたりして解析を妨害するという仕組みである。
後者の場合は最小化「minify」と言い、プログラム内部だけで完結する変数や関数をできるだけ短い文字列に変換し、インデントも改行も全部削って、さらに言語仕様の許す限り省略記法を使うことでプログラムコードの最小化を目指す。minifyを使うのはWeb上のリソースが多い。HTMLやJavaScript、CSSをminifyして切り詰めることで転送量が減り、ユーザーはパケット代も浮いてページ表示が早まり、Web管理者は転送料金が節約できるというわけである。
関連項目
- 7
- 0pt