2003年06月16日
川俣晶の縁側ソフトウェア技術雑記total 5843 count

#if-#else-#endifを活用したソースコードの書き換え

Written By: 川俣 晶連絡先

 最近、既にあるC#のソースの一部を書き換えるために、#if-#else-#endifを活用するようになりました。

 たとえば、以下のコードを書き換えるとします。

 untaraKantaraMendouNaMono(areya,koreya,iroiro);

 まず、#if-#else-#endifをつけ加えます。

#if true

#else

 untaraKantaraMendouNaMono(areya,koreya,iroiro);

#endif

 こうしてから、#if trueと#elseの間に、書き直すコードを書いていきます。

 これによって、書き換え途中で書き換え前の内容をすぐ参照できるし、動作に疑問がある場合はtrueをfalseに置き換えるだけで旧コードを実行できます。

 こういう変更方法はスマートかもしれない、と思いましたが本当はおかしいですね。#if-#else-#endifは古のCにもあるプリプロセッサ ディレクティブです(ちょっと違うけど)。今頃喜ぶのはなぜだろうと思って考えてみると、原因はJavaにあるらしいことに気付きました。Javaにはプリプロセッサが無いからです。

 どうもJavaに巻き込まれたことで、感覚が狂ってしまったところがあるようです。少し校正し直さねば……。

 以下、説明不足であることに気付いたので追加します。

 この手法は、ソースの変更内容を記録するために使うものではない、ということを説明し忘れていました。変更内容を記録するには、そのためのツールであるVisual Source SafeやCSVなどを使うのが基本です。ここで述べた手法は、こういうソース管理ツールにチェックインするまでの短い時間に、変更前のソースと変更後のソースを#if-#else-#endifで共存させるものです。修正完了後には取り除いてしまうべきものです。そうしないと、ソース上に古いソースの残骸が散在して読みにくくなるし、下手をすると#if-#else-#endifがネストしてメンテできない化け物になる可能性もあり得ます。

 というわけで、試してみる人がもし居れば、使い所を間違えないようにお願いします。

Facebook

キーワード【 川俣晶の縁側ソフトウェア技術雑記
【技術雑記】の次のコンテンツ
2003年
06月
19日
正しくテストが失敗する……という表現はちょっとおかしい?
3days 0 count
total 1593 count
【技術雑記】の前のコンテンツ
2003年
06月
16日
.NET FrameworkはWindows じゃない、ということを理解しない人達?
3days 0 count
total 7429 count

このコンテンツを書いた川俣 晶へメッセージを送る

[メッセージ送信フォームを利用する]

メッセージ送信フォームを利用することで、川俣 晶に対してメッセージを送ることができます。

この機能は、100%確実に川俣 晶へメッセージを伝達するものではなく、また、確実に川俣 晶よりの返事を得られるものではないことにご注意ください。

このコンテンツへトラックバックするためのURL

http://mag.autumn.org/tb.aspx/20030616145918
サイトの表紙【技術雑記】の表紙【技術雑記】のコンテンツ全リスト 【技術雑記】の入手全リスト 【技術雑記】のRSS1.0形式の情報このサイトの全キーワードリスト 印刷用ページ

管理者: 川俣 晶連絡先

Powered by MagSite2 Version 0.33 (Alpha-Test) Copyright (c) 2004-2018 Pie Dey.Co.,Ltd.