4

非常に不可解な方法で書かれたコードがいくつかあります。私以外の誰かが理解するのは、メンテナンスの悪夢になるでしょう。

文字列連結、三項演算子、および連結を使用した演算子の寄せ集めです+

だから私の質問は、このステートメントを読みやすくするにはどうすればよいですか?

tb.setTally_narration(
     tb.getTally_mode().equals("Ca") ? 
        "Receipt No. "
             .concat(tb.getTally_receipt_no())
             .concat(", "+tb.getTally_mode()) : 
        "Receipt No. "
             .concat(tb.getTally_receipt_no()+", "+tb.getTally_mode())
             .concat(", "+tb.getTally_instrument_no()+", "+tb.getTally_instrument_date()+", "+tb.getTally_instrument_bank())
);

編集:この質問は主観的であることを認識しています。そして、codereview stackexchange サイトに属していると思います。そこに移動することはできますか?

4

3 に答える 3

4
  String rNum    = tb.getTallyReceiptNum();
  String mode    = tb.getTallyMode();
  String iNum    = tb.getTallyInstrumentNum();
  String iDate   = tb.getTallyInstrumentDate();
  String iBank   = tb.getTallyInstrumentBank();

  String narration = String.format("Receipt No. %s, %s", rNum, mode);

  if(! "Ca".equals(mode)){
    narration = String.format("%s, %s, %s, %s", narration, iNum, iDate, iBank);
  }
  1. Java 形式のメソッド名。
  2. String.format()将来の書式変更を許可します。
  3. null 以外の文字列 ( "Ca" ) を呼び出しequals()て、NPE の可能性を減らします。
于 2013-09-03T18:16:20.567 に答える
4

文字列の最初の行は同じように見えるので、次のように単純に記述します。

StringBuilder narration = new StringBuilder("Receipt No. ");

narration.append(tb.getTally_receipt_no())
         .append(", ").append(tb.getTally_mode());
if (!"Ca".equals(tb.getTally_mode()))
{
    narration.append(", ").append(tb.getTally_instrument_no())
             .append(", ").append(tb.getTally_instrument_date())
             .append(", ").append(tb.getTally_instrument_bank());
}

tb.setTally_narration(narration.toString());
于 2013-09-03T18:17:10.487 に答える