管理人の趣味メインのメモto日記
AIONブログ RSS [情報サイト表示]
[注意] LinkやRSSについて

シエルサーバ RSS [情報サイト非表示]

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
[ -------- (--) --:-- ]  
   Category:スポンサー広告

・ω・)ノ
 
バグみっけ・・・・ (・ω・
 
 
 
 
 
<本日のトピックス>
  • [雑 記] JDKの版数あっぽ・・・・・・・・
  • [雑 記] 新人教育トレーナーの辞書がわり
     
     
  • [雑 記] JDKの版数あっぽ・・・・・・・・
    とあるお仕事(本職)で、システム更改の話が合って・・・・8年ほど前に作られた
    アプリの調査を行っていました(言語はJAVA、UNIX C++、VC++、VB)。
     
    サーバ側のOS(Solaris)のバージョンアップ、各ミドルウェア(ORACLEなど)の
    バージョンアップがメインでソフト自体は改修しない方向なのですが、
    上記バージョンアップに伴う改修が必要なところは対応していくという方向で
    調査していたのです。
    で、JDKも1.4 ⇒ 6.0(5.0?)になるのですが・・・・これに関して面白い(?)改修が
    発生しそうなので以下にメモ。
     
    C言語では、当たり前なのですが"enum"と言う予約語があります。
    実はJAVAには、"enum"が予約語ではなかったようで(1.4までは)、たまたま・・・・
    特定の文字列を略して"enum"と言う文字列を変数として利用している所がありました。
    C言語を触っていたら"enum"は普通使わないだろって思うのですが、
    ここを作られた方は"enum"もとい、C言語しらなかったのかな?ってお話です。
    Eclipseで、1.4準拠でチェックするとエラーにならず、警告で
     
     'enum'はソース・レベル 5.0からの予約済みキーワードなので、識別子として
     利用することはできません
     
    と、言われてしまいます。当然5.0以上でチェックすると警告でなくエラーとなります。
    はじめ、エラーの原因がさっぱりわかりませんでした。
     
     
     
    で、まぁ・・・・。この調査をやっている中、バグを見つけてしまいました。
     
     
     private boolean sampleFlag = true;

     == 途中省略 ==

     /**
      * サンプルフラグを設定します
      * @param sampleFlag フラグ
      */
     public void setSampleFlag(boolean editSampleFlagg) {
       this.sampleFlag = sampleFlag;
     }
     
    サンプルフラグは、あくまで記事用に書き直したのですが・・・・、
     
     
     public void setSampleFlag(boolean editSampleFlagg) {
       this.sampleFlag = editSampleFlagg;
     }
     
     
    ではないかと思います。
    さらに、"editSampleFlagg"でなく"editSampleFlag"ですかね?(-ω-;
     
    後者はどうでもよいお話ですが、プログラムはほぼバグって・・・・(ry
     
     
  • [雑 記] 新人教育トレーナーの辞書がわり
    私のちょうど背中側1島の席に、今年はいられた新人君がJAVA研修を受けています。
    研修と言っても、机上の空論でなく社内システムを実際つくる(実際にそった工程も含め)。
     
    で、まぁ・・・・書いたように言語はJAVAで社内のWEBシステムなのですが、その教育係
    俗にいう新人教育のトレーナーから、しばしば質問を受けることがあります。
    トレーナー自身、JAVAでの開発が未経験(Cメイン?)らしく、JAVA独特のお作法が
    よくわからない所があって、ソレについての質問と言うことにしておきましょう。
     
    そんな中、クラス変数
     
    public class sampleClass{
     
     private boolean sampleFlag = true;
     
     == 以下省略 ==
     
     
    上記のように、クラス変数を宣言、初期化しているわけですが、
    クラスのコンストラクタでも、同じように初期化しているのですがなぜ?って・・・・(-ω-;
     
    「知らんがな・・・・」が、解なのですが、C++の場合、クラス変数の宣言と同時に
    初期化できないので、それにならったのかも・・・・と、答えました。
    自分もC++の場合は、
     
    class sampleClass{
    private:
     bool sampleFlag;
     
    public:
     
     sampleClass(){
      init();
     }
     
     void init(void){
      sampleFlag = true;
     }
     
     
    って、記述してたりします。
    一括で、変数を初期化したいときとかinit関数作っておくと便利です。
    まぁ、外部からの呼び出しを許可するか、しないかで"private"に行ったりする訳ですが。
     
    これと同様に、VB(最近のは、知りませんが)は、変数を宣言すると特定の値で
    初期化してくれます(数値系なら0、文字列系なら"")。しかし、C言語は初期化してくれないので
    癖として、変数は使う前に初期化しろって言われたことあったなぁ・・・・。
     
     

  • スポンサーサイト
    [ 2012-06-30 (Sat) 14:00 ]   Comment(0)
       Category:雑記:IT関連
    管理者にだけ表示を許可する

    TrackBackURL
    → http://extremes.blog40.fc2.com/tb.php/518-e85a428e
    上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。