タグ

styleとjavaに関するkiyo_hikoのブックマーク (13)

  • ソースコードを汚くするには - Qiita

    ソースコードを汚くするには? 汚いプログラム(ものによってはバグを引き起こすプログラム)にするためにはどうすればいいのかを書きました 情報集約のため以下ページに内容を移動させました Register as a new user and use Qiita more conveniently You get articles that match your needsYou can efficiently read back useful informationYou can use dark themeWhat you can do with signing up

    ソースコードを汚くするには - Qiita
    kiyo_hiko
    kiyo_hiko 2016/03/30
    "プリミティブ型やString型は表現力が乏しい。適切なオブジェクトを定義したほうが分かりやすい" // そういえばJava使ってたときは3値以上返すメソッド書くときはenum返してた 復習になる
  • ちょっといいJavaコードを書こう - Qiita

    一人でプログラムを書いてたりすると、環境によってはあまりコードの書き方には指摘を受けなくて困りますよね。プロになっても、曲がりなりにもちゃんと動くコードを書けてしまうとあまりに当たり前のことなんかは指摘されることも稀で、そのままある程度偉くなっちゃった日には、もはや自分で気付くしかなくなってしまいます。 FindBugsとか、Effective Javaなら使ったり読んでみたり読ませたりすることはできますが、それ以前のところって難しいんですよね。よいコードと言うよりそれが当たり前だと思われているので、指摘するにしても「こうすればいいよ」(アドバイス)じゃなくて「なんでこうしてないの?」(詰問)になってしまいがちです。 そこで、最近そういうJavaニュービーに指摘している(したい)ことの多い、Javaの基礎的な事柄をまとめてみました。ワタシJavaチョットデキルって人は、これ以外にもやりがち

    ちょっといいJavaコードを書こう - Qiita
  • Amazon.co.jp: 実践Javaコーディング作法 プロが知るべき、112の規約と21の心得: 森崎雅稔: 本

    Amazon.co.jp: 実践Javaコーディング作法 プロが知るべき、112の規約と21の心得: 森崎雅稔: 本
    kiyo_hiko
    kiyo_hiko 2015/02/26
    うーん
  • MET05-J. コンストラクタにおいてオーバーライド可能なメソッドを呼び出さない

    Java言語仕様§12.5「クラスインスタンスの作成」には以下のように記されている。 C++ とは異なり、プログラム言語 Java では新規クラスインスタンス生成中のメソッドディスパッチに対する代替規則を規定していない。オブジェクトの初期化中に、サブクラスでオーバーライドしたメソッドを起動すると、新たなオブジェクトの初期化が完了する前であっても、オーバーライドしたメソッドのほうが起動される。 オーバーライド可能なメソッドをオブジェクトの構築時に呼び出すと、初期化の完了していないデータが使用され、実行時例外や予期せぬ結果を招く恐れがある。また、オブジェクトの構築が完了する前にthis参照が外部に晒され、初期化完了前のデータあるいは矛盾したデータを、他のスレッドに晒す危険性がある。詳しくは「TSM01-J. オブジェクトの構築時にthis参照を逸出させない」を参照。結論としては、コンストラクタ

    MET05-J. コンストラクタにおいてオーバーライド可能なメソッドを呼び出さない
    kiyo_hiko
    kiyo_hiko 2014/12/11
    "C++ とは異なり…Java では新規クラスインスタンス生成中のメソッドディスパッチに対する代替規則を規定していない。…オブジェクトの初期化が完了する前であっても、オーバーライドしたメソッドのほうが起動される。"
  • Java駄目メモ(Hishidama's Java anti-pattern Memo)

    Javaのダメなコーディング Javaのアンチパターンと言うほど高尚なものではないけれど、「こんな事しちゃアカンよ」という例。 Formatを同期せず使用 [/2008-05-12] 不要なnew [2008-04-26] Stringの等値比較方法 定数==変数 [/2008-05-23] Integerの使用方法 [/2008-05-21] Exceptionの使用目的 回数指定ループ [2008-04-26] イテレーター+カウントパターン [/2014-10-04] Format系クラスの同期 Format系のクラスはMTセーフでない。[2008-04-26] Format系のクラスというのは、java.text.Formatを継承したクラス、すなわちDateFormatとかNumberFormat(DecimalFormat)といったクラスのこと。 これらのクラスのJavadoc

    kiyo_hiko
    kiyo_hiko 2012/07/31
    「Iteratorを使っているのにイテレーターパターンでないのはどうかと思う」 哀しいことにそういうコードをよく見る そういう器用なことを思いつく程度の賢さはあるのに、読みやすく書かない理由はなんなんだろう
  • java-jaで例外処理の話をしてきました - 西尾泰和のはてなダイアリー

    ブログを書くまでがjava-jaですが、もう眠いのでとりあえず1行だけ書いて、あとは徐々に書き足す。 会場を無料提供してくれたグリーさん、ありがとうございます! 誰かが検査例外の話をするだろうと思って書かなかったら結局誰も言及しなかった、Javaのコミュニティなのに。 っていうか聴衆が100人もいると、もしかしてそもそも「検査例外ってなに?」って人もいたんじゃないか?「検査例外がOCPを壊す」とか「Liskovの置換原則のLiskov」とか通じてるんだろうか?とりあえず直和型が通じてないことだけはひしひしと感じた。 Twitterの自分の発言を転載しておく。 ちなみにZen of Pythonでも「エラーを握りつぶすな」と書いてあります 禅 of Python: 20の格言 「例外はそもそも何のため」ってところ、ざっくり省いたんだけどもそういうところのほうがニーズあったかね?? 「C#1.

    java-jaで例外処理の話をしてきました - 西尾泰和のはてなダイアリー
  • サービス提供終了のお知らせ

    日頃より、アレスネットをご愛顧いただきまして誠にありがとうございます。 「ホームページサービス」のサービス提供は2016年1月31日をもちまして終了させていただきました。 これまで長らくご利用いただき、誠にありがとうございました。 今後も、皆様によりよいサービスをご提供させていただけるよう、サービス品質向上に努めて参りますので、何卒、ご理解いただけますようお願 い申し上げます。 <アレスネットをご契約のお客様へ> 後継サービスとして「userwebサービス」を提供させていただいております。 詳しくは、以下のリンクをご参照ください。 ▼「userwebサービス」のご案内 http://www.ejworks.info/userhp/alles/index.html 今後ともアレスネットをご愛顧いただけますようお願い申し上げます。 株式会社イージェーワークス アレスネット カスタマーサポート

  • はじめてのJava入門[制御文(ラベルによるループの制御)]

    ここで if文 i == 1 && j == 1は i とj が両方ともtrueなら全体がtrueになりました。 したがって i = 1, j = 1のときにtrueになりbreakにより終了します。 しかし、breakのあとにpointというラベルが指定されています。 したがって、point:に移動して終了します。 つまり、point:が外側のfor文の外にあるので、外側のfor文まで抜けます。 ついでに、上記Sample 38.javaでラベルを記述しなかった場合を確認します。 サンプルプログラム(Sample38_1.java) class Sample38_1{ public static void main(String args[]){ for(int i = 0; i < 4;i++){ for(int j = 0; j < 4;j++){ System.out.printl

    kiyo_hiko
    kiyo_hiko 2012/05/11
    ラベル使い方 自分の平常運転だと2重ループ自体ほとんどないので餘り意識したことなかった / 先程5重ループの中でcontinueしまくってるコードを見て思ったけど、多重ループはラベルを強要するぐらいのルールがいいかも
  • その他各種

    kiyo_hiko
    kiyo_hiko 2012/05/10
    "ユーティリティクラスなど、拡張する可能性の無いクラスに関しては 明示的にクラスに final 識別子を付けましょう。 そして private のコンストラクタを定義します"
  • ○○Implの命名方法は悪!? - kensir0uのしくみ

    この前ケント・ベックさんの実装パターンというを読んだんだけども。 ソースはコミュニケーションをとるように記述する必要があると述べていた。 その中で、○○Implのネーミングはひどいと言っている。 たしかに実装クラスとインターフェースで区別を付けたいというのはわかる。 ○○Implだと実装クラスが複数ある場合は区別できないのも困る。 それのサブクラスを作って拡張するときにはなんと命名するのだろう? ○○ImplExtとでも、○○ImplSubとでも付けるのだろうか? 考えてみるといろいろ疑問に感じてきた。 そこでJavaのパッケージはどうなんだろうと思って調べてみた。自分の経験からJavaパッケージに○○Implって付いてるのはあまり見たことないので・・・無いのではないかなと思ったけども。 結論から言うと20クラスが○○Implだったり○○ImplFactoryとか命名されていた。(※イン

    ○○Implの命名方法は悪!? - kensir0uのしくみ
    kiyo_hiko
    kiyo_hiko 2012/04/11
    単純に英語として意味を通そうとすると、標準的な"○○Impl"は微妙で、Concrete○○とかになるのかなあと思った
  • 「プログラムの命名規約について」(1) IT戦略 - @IT

    私は或るシステムの開発(プログラム)を担当しているのですが、 資産のファイル名の命名規約に疑問をもっています。 例えば以下のようなファイル名にすると... DH01UVN001.java DH01UVN002.java public void unshu_mikan () { : DH01UVN001 dbmgr = new DH01UVN001( DH01UVN002.NORMAL_VALUE ); : } のような記述をメソッドにしなくてはなりません。 クラスが以下の機能であるとすると、 DH01UVN001 DB接続クラス DH01UVN002 定数クラス DH01UVN001.java → DBManager.java DH01UVN002.java → SystemConst.java という方が自然だと思います。メソッドも以下のようになるわけです。 public void un

    kiyo_hiko
    kiyo_hiko 2012/03/20
    管理番号をクラス名にするってのは糞規約 インスタンスメンバーを呼ぶならまだいいが、クラスメンバーを呼ぶと意味不明に / 型エイリアスが付けれらればいいなと思ったけど、IBMだかでアンチパターン言われてたような
  • 標準化規約 2.Java標準化規約 : 富士通

    標準化規約 2.Java標準化規約 Javaアプリケーションを開発する上での、標準化規約の例をご紹介します。 以下でご紹介する標準規約は、Java開発規約チェッカSIMPLIA/JF Kiyackerで提供しているものです。 SIMPLIA/JF Kiyackerを利用することで、作成したJavaソースコードが標準規約に従っているかどうかを自動的にチェックできますので、アプリケーションの品質向上を図ることができます。 SIMPLIA/JF Kiyacker製品情報ページ

    kiyo_hiko
    kiyo_hiko 2012/03/09
    どんなクソな規約が待っているかと思ったら思ったよりマシだった しかし最後のクラス名の命名例&システムハンガリアンで大幅にポイントを下げた
  • Java/NamingRules - KLab Public Wiki

    パッケージ † 例)java.lang すべて小文字で、「.(ピリオド)」で階層を区切る。ピリオドで区切られる文字は、基的に1つの単語を使用する。 ↑ クラス † 例)AudioFileReader 先頭を大文字で、後は単語の先頭を大文字にする。 クラス名には「名詞」を用いる。 どうしても「動詞」が使いたくなったら、一度「このクラスは何のために作るのだろうか?」と考える。もしかしたらメソッドとして使ったほうが良いかもしれない。 ↑ インターフェース † 例)ComponentListener,Cloneable 先頭を大文字で、後は単語の先頭を大文字にする。 インターフェースも普通のクラスと同様に「名詞」を使うが、わかりやすくするために先頭に「I」をつけることがある。 クラスにある能力を付け加えるためのインターフェースには末尾に「able」を追加することがある。 ↑ 抽象クラス †

    kiyo_hiko
    kiyo_hiko 2012/02/06
    個人的に「_」使わない フィールドはEclipseが色変えてくれるし / 名詞・動詞の使い分け大事 今格闘中のソースは関数名が名詞だったりムカムカする。マクドで「アイスコーヒー」言うとコーヒー作ってくれる的な発想?
  • 1