初心者のためのC#プログラミング本格入門103 - セキュリティ意識をもってプログラミングしよう
現在作っているSimpleListに、要素を追加する機能はありますが、追加した要素を削除する機能がありません。そこで今回は削除機能を作ります。テストファーストの精神に従ってテストから作りましょう。
//関係のないプログラムは省略しています。
class SimpleListTest : Test
{
public override void ExecuteAllTest()
{
this.OneElementAdd();
this.CurrentTest();
this.AddElementCheck();
this.ForeEachTest();
this.ForeEachTest2();
this.OneElementRemove( ); //ここに追加
}
private void OneElementRemove()
{
base.Execute( );
int count = 10;
for ( int i = 0 ; i < count ; ++i ) {
this.target.Add( i );
}
this.target.Remove( );
if ( this.target.Count != ( count - 1 ) ) {
string message = "正しく削除されていません。";
base.Error( message );
}
}
}
始は簡単なテストにしておきます。Removeを定義しておき、テストを実行しましょう。エラーメッセージが表示されることを確認しましょう。面倒だと思うでしょうが、意外とこうした確認作業は重要です。さて、Removeメソッドをどのようにプログラミングしましょうか?一番簡単なのは、配列の場所を指す変数をデクリメントする方法です。SimpleListオブジェクトは、insertIndexという変数で新たに追加する場所を管理しています。つまり、Removeメソッドを呼び出す前のinsertIndex変数は、今から追加しようとしているデータの場所を示しているのです。従って、要素を1つ減らすには、その場所を1歩下がればよい(変数を1減らす)ということになります。
//関係のないプログラムは省略しています。
partial class SimpleList
{
public void Remove()
{
this.data[ this.insertIndex ] = 0;
--this.insertIndex;
}
}
これでテストをパスできます。考える事がない、単純極まりないプログラムに見えますが、本当はそうではありません。配列に格納しているデータを消している点が非常に重要です。配列内にあるデータを消さないと、元のデータが残ってしまいます。そうしたデータは、ちょっとした技術力があれば調べられます。初心者の人は驚くでしょうが、クラッカーと呼ばれる悪い人たちは、こうしたちょっとした隙を使って悪さをします。使用しないデータは消すという心掛けが大切です。初心者がいきなり本格的なセキュリティプログラミングをするのは無理ですが、データを消すことならば誰でもできます。今のうちに、セキュリティにつながるプログラミングを習慣付けしましょう。プログラミングもまたスポーツと同じで日頃の練習が大事なのです。