2011年10月30日

プログラミングが上達しない理由とArrayList.remove(int position)の落とし穴

自分のプログラミング技術が超初心者レベルをいつまでも脱することなく、上達しない理由に気づきました。
というより、より明確に自覚しました。

今はL----Noteの次のバージョンアップに取り掛かっているのですが、ひとつの機能を実現するのに2週間とか3週間とかかかっていると、それだけで時間がとられてしまいます。
まったく勉強にならないことはないですが、広範な知識とスキルを身につけることができません。
要は頭が悪くて時間がかかるからと言ってしまえばそれまでですが、本来なら最初のうちはJavaの小さなプログラムをたくさん書いたり見たりすることで基礎的なスキルを身につけるのが大切なんでしょうけど、大きな(?)プログラムの一部だけを何度も書き直していることで時間と気力を消耗させてしまっているのです。

ちなみにごく一部ですが、たとえば今回ArrayListの要素をある位置まで末尾から順番に削除していく必要があったのですが、最初
for(int i=0;i<arrayList.size();i++){
 arrayList.remove(arrayList.size() - 1);
}

などと書いていたら、要素が歯抜けのように削除されて後ろから順番に削除されないことでエラーになってしまいました。
ArrayListの要素を削除するとarrayList.size()の要素数も変化するということに気づかないお間抜けぶり。(笑)
なんか前にもこの間違いをやったような気がするのに、これで半日くらい悩んでいました。
結果あまりwhileって使いたくないのですが、以下のように書き直しました。

while(arrayList.size() >= delPosition){
arrayList.remove(arrayList.size() - 1);
}

このようにスキルだけでなく脳みそのポテンシャルにも大きな問題があるため遅々として進まないのです。
でも、プログラムから足を洗うとしても少なくともL----Noteに本来想定したある機能をつけるまでは早くこの自転車操業状態から抜け出したいと思いつつ、下手なコードを書く毎日……
posted by 白虹 at 10:45| Comment(3) | TrackBack(0) | Android開発
この記事へのコメント
こんばんは
拝見させて頂きました
僕もJavaでのAndroidプログラマーです。
でも記事主さんと同じ作成完成するまで時間がかかってしまうんです。
今は音楽再生アプリのシークバーの実装したいと考えてますけど一ヶ月たってもまだ出来てないです。
で、ググったりリファレンス読んだりしても解決できない状態です。
趣味でやるからモチベーションも保ちずらくシンドイ。
どうしたら早く作れるのかな・・・
Posted by 名無し at 2013年06月03日 02:03
コメント、ありがとうございました。
そうですね。やはり完成までに時間がかかりすぎると嫌になってしまいますよね。
たくさんプログラムを書くことで、(実際にライブラリを作らなくても)自分ライブラリのようなものが蓄積されていくと少しは早くなるのでしょうけど、そこまで行き着くのに結局時間がかかる……
ジレンマですね。
でも、お互いなんとか頑張りましょう。
Posted by 白虹 at 2013年06月03日 23:30
This can be the worst write-up of all, I’ve study [url=http://www.freedatingsites24.com]online dating[/url] <a href="http://www.freedatingsites24.com" title="online dating">online dating</a>
Posted by online dating at 2013年07月16日 07:02
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/49593766

この記事へのトラックバック