コンストラクタをテスト山の玉は再構築できます:身分証明書番号(4日目)Strut 2チュートリアル-javaチュートリアル
5993 ワード
文章の終わりにプログラマーのジョークをみんなにあげます:[M]
明日になって、私は本当に私の望む再構築/改良を始めることができます.前に、テストを補うだけで、構造を調整しました.はい、とても遅いですが、これは意外にも「捷敏」と呼ばれています!?おかしいと言ったのか?幸いなことに、このリズムを植えるのは私がこの年頃の青年に適していて、適用すればいいので、風花なのか雪月なのかは関係ありません.
前回は最も主要な非同期が漏れて、オーバーライドをテストしました.
ハンサムな100%カバー率のテストができると思っていたが、人は天算に及ばず、75%の方法があった.
(本著作権版は© 2012 - 2013 予沁安 )
はい、無効な日生はテストしていません.
簡単です.テストを追加しただけで、ここでくどくどしません.直接カバー率を貼って、見せてください.
コード量質パラメータをもう一度表示します.
複素度が一番大きいのはコンストラクタです.可護維標指はやはりいい76点です.
こまごました改良は、後のように、1つのテストに基づいて縦に変更することもできますし、全体的にテストを完了することもできます.あまり関係ありません.前者は厳しいテスト駆動です.しかし、あまり学術化する必要はないと思います.肝心なのは、あなたの任務が十分に小さく、明日実現できることです.それは適切です.
1. ある情報ブロックを属性式方に変更する.一つはJavaとC#の別区であるからだ.第二に、元のコードのバッファ日生の論理を極致にし、最初からバッファ(コンストラクタの中)
2.データ分析はコンストラクタに解放され,コンストラクタで呼び出されるだけの独自の方法を確立する.
日付が雑多だから、また独自の方法を立てる.
3.以前のコード解析パラメータから,コンストラクタの複素度が高すぎて,主にいくつかの検証が見られた.正規表現が含まれているため、null、emptyを削除する2つの検証方法を改良します.
毎日同じ理屈
まさに「学海無涯」である.私たちは茫漠とした知識の海の中で魚の群れが跳躍し、戯れ、知識の海の中で生まれ、成長し、生活しているようだ.私たちはこの生活を維持する「海水」から離れられない.もしこの「海」から飛び出して、「陸地」に行って生活すれば、私たちは非情な「太陽」に照らされて死ぬだろう.
保護性は82に向上し,複素度はvalidate()3が最も高く,
完全なコードは、はっきりしていますか?
(本著作権版は© 2012-2013 予沁安|転載作者と出典を明記してください)
ある日、一人の男が森を通り抜けたとき、小さな声で彼を呼んだ.彼は頭を下げて見るとカエルだった.「キスしてくれれば、きれいなお姫様になるよ」男は何も言わずにカエルを拾い、ポケットに入れた.「キスしてくれれば、私は美しいお姫様になりますよ.そして、出会ったすべての人に、あなたがどんなに賢くて勇敢なのか、あなたは私の英雄だと教えてくれます.」男はカエルを出して、それに向かってかすかに笑って、またポケットに戻しました.「キスしてくれれば、私は美しいお姫様になります.それから、私はあなたの妻になりたいです.一週間」男の人はまたカエルを出して、それに向かってかすかに笑って、それをポケットに戻しました.「キスしてくれれば、私は美しいお姫様になります.それから、私はあなたの妻になりたいです.そして、あなたは私に何でもすることができます.」もう一度、男はカエルを出して、それに向かってかすかに笑って、またポケットに戻しました.最後に、カエルは無力に「私はこんなに良い条件を出したのに、どうして私にキスしてくれないの?」と聞いた.男の人は言います:“私は1人のプログラマーで、私はどんな王女とごろつきをする时間がありません.しかし、1つの话すことができるカエルを持っていて、とてもクールです.”
明日になって、私は本当に私の望む再構築/改良を始めることができます.前に、テストを補うだけで、構造を調整しました.はい、とても遅いですが、これは意外にも「捷敏」と呼ばれています!?おかしいと言ったのか?幸いなことに、このリズムを植えるのは私がこの年頃の青年に適していて、適用すればいいので、風花なのか雪月なのかは関係ありません.
==テストオーバーライド
前回は最も主要な非同期が漏れて、オーバーライドをテストしました.
ハンサムな100%カバー率のテストができると思っていたが、人は天算に及ばず、75%の方法があった.
(本著作権版は© 2012 - 2013 予沁安 )
はい、無効な日生はテストしていません.
簡単です.テストを追加しただけで、ここでくどくどしません.直接カバー率を貼って、見せてください.
コード量質パラメータをもう一度表示します.
複素度が一番大きいのはコンストラクタです.可護維標指はやはりいい76点です.
==>最適化の改良:属性、静設値、その他
こまごました改良は、後のように、1つのテストに基づいて縦に変更することもできますし、全体的にテストを完了することもできます.あまり関係ありません.前者は厳しいテスト駆動です.しかし、あまり学術化する必要はないと思います.肝心なのは、あなたの任務が十分に小さく、明日実現できることです.それは適切です.
1. ある情報ブロックを属性式方に変更する.一つはJavaとC#の別区であるからだ.第二に、元のコードのバッファ日生の論理を極致にし、最初からバッファ(コンストラクタの中)
public string CardNumber { get;private set; }
public string AddressCode { get; private set; }
public DateTime BirthDate { get; private set; }
public Gender Gender { get; private set; }
2.データ分析はコンストラクタに解放され,コンストラクタで呼び出されるだけの独自の方法を確立する.
void extract()
{
AddressCode = CardNumber.Substring(0, 6);
Gender = ((int) CardNumber[CARD_NUMBER_LENGTH - 2])%2 == 0 ? Gender.Female : Gender.Male;
BirthDate = extract_birth_date();
}
日付が雑多だから、また独自の方法を立てる.
public DateTime extract_birth_date()
{
try
{
return DateTime.ParseExact(CardNumber.Substring(6, 8), BIRTH_DATE_FORMAT, null);
}
catch (Exception e)
{
throw new ApplicationException(" ");
}
}
3.以前のコード解析パラメータから,コンストラクタの複素度が高すぎて,主にいくつかの検証が見られた.正規表現が含まれているため、null、emptyを削除する2つの検証方法を改良します.
毎日同じ理屈
まさに「学海無涯」である.私たちは茫漠とした知識の海の中で魚の群れが跳躍し、戯れ、知識の海の中で生まれ、成長し、生活しているようだ.私たちはこの生活を維持する「海水」から離れられない.もしこの「海」から飛び出して、「陸地」に行って生活すれば、私たちは非情な「太陽」に照らされて死ぬだろう.
private void validate(string cardNumber)
{
if (!SOCIAL_NUMBER_PATTERN.IsMatch(cardNumber))
throw new ApplicationException("Card Number has wrong charactor(s).");
if (cardNumber[CARD_NUMBER_LENGTH - 1] != verifier.verify(cardNumber))
throw new ApplicationException("Card Number verified code is not match.");
}
public SocialID(String cardNumber)
{
validate(cardNumber);
CardNumber= cardNumber;
extract();
}
===』OK、最初は立ち上がって、コーヒーを一杯ください。私たちの成果を楽しんでください。
保護性は82に向上し,複素度はvalidate()3が最も高く,
完全なコードは、はっきりしていますか?
using System;
using System.Text.RegularExpressions;
namespace Skight.eLiteWeb.Domain
{
public enum Gender
{
Female,
Male
}
public class SocialID
{
private static Verifier verifier = new Verifier();
private static String BIRTH_DATE_FORMAT = "yyyyMMdd";
private static int CARD_NUMBER_LENGTH = 18;
private static Regex SOCIAL_NUMBER_PATTERN = new Regex(@"^[0-9]{17}[0-9X]$");
public SocialID(String cardNumber)
{
validate(cardNumber);
CardNumber= cardNumber;
extract();
}
private void validate(string cardNumber)
{
if (!SOCIAL_NUMBER_PATTERN.IsMatch(cardNumber))
throw new ApplicationException("Card Number has wrong charactor(s).");
if (cardNumber[CARD_NUMBER_LENGTH - 1] != verifier.verify(cardNumber))
throw new ApplicationException("Card Number verified code is not match.");
}
void extract()
{
AddressCode = CardNumber.Substring(0, 6);
Gender = ((int) CardNumber[CARD_NUMBER_LENGTH - 2])%2 == 0 ? Gender.Female : Gender.Male;
BirthDate = extract_birth_date();
}
public DateTime extract_birth_date()
{
try
{
return DateTime.ParseExact(CardNumber.Substring(6, 8), BIRTH_DATE_FORMAT, null);
}
catch (Exception e)
{
throw new ApplicationException(" ");
}
}
public string CardNumber { get;private set; }
public string AddressCode { get; private set; }
public DateTime BirthDate { get; private set; }
public Gender Gender { get; private set; }
}
}
(本著作権版は© 2012-2013 予沁安|転載作者と出典を明記してください)
ある日、一人の男が森を通り抜けたとき、小さな声で彼を呼んだ.彼は頭を下げて見るとカエルだった.「キスしてくれれば、きれいなお姫様になるよ」男は何も言わずにカエルを拾い、ポケットに入れた.「キスしてくれれば、私は美しいお姫様になりますよ.そして、出会ったすべての人に、あなたがどんなに賢くて勇敢なのか、あなたは私の英雄だと教えてくれます.」男はカエルを出して、それに向かってかすかに笑って、またポケットに戻しました.「キスしてくれれば、私は美しいお姫様になります.それから、私はあなたの妻になりたいです.一週間」男の人はまたカエルを出して、それに向かってかすかに笑って、それをポケットに戻しました.「キスしてくれれば、私は美しいお姫様になります.それから、私はあなたの妻になりたいです.そして、あなたは私に何でもすることができます.」もう一度、男はカエルを出して、それに向かってかすかに笑って、またポケットに戻しました.最後に、カエルは無力に「私はこんなに良い条件を出したのに、どうして私にキスしてくれないの?」と聞いた.男の人は言います:“私は1人のプログラマーで、私はどんな王女とごろつきをする时間がありません.しかし、1つの话すことができるカエルを持っていて、とてもクールです.”