第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

驗(yàn)證是否應(yīng)該更改數(shù)據(jù)?

驗(yàn)證是否應(yīng)該更改數(shù)據(jù)?

C#
烙印99 2023-09-24 16:08:50
我有一些用于驗(yàn)證的服務(wù)。它們包含簡(jiǎn)單的數(shù)據(jù)驗(yàn)證和一些更復(fù)雜的業(yè)務(wù)邏輯的組合。其中一些驗(yàn)證調(diào)用還會(huì)“清理”數(shù)據(jù),使其符合我們的標(biāo)準(zhǔn)。這似乎應(yīng)該在其他地方完成(單一責(zé)任)。我對(duì)驗(yàn)證數(shù)據(jù)的理解是,它只是回答是/否問題(是否有效)并可能返回一些驗(yàn)證消息。因此它將返回一個(gè)布爾值或某種類型的驗(yàn)證錯(cuò)誤。如果我們想在保存或處理之前格式化數(shù)據(jù),我們應(yīng)該有另一層代碼來清理數(shù)據(jù)格式??纯聪旅娴睦?。我們有兩種方法來檢查字符串的長(zhǎng)度。如果長(zhǎng)度正確,第二個(gè)還會(huì)將其轉(zhuǎn)換為上部。因此,它會(huì)在其過程中更改字符串。問題:我的核心問題是,在談?wù)擈?yàn)證時(shí),我們是否應(yīng)該關(guān)心清理/格式化數(shù)據(jù)?換句話說,驗(yàn)證是否應(yīng)該改變數(shù)據(jù)?public class ValidationService{    public bool ValidateText(string text)    {        bool rtn = false;        if (IsStringCorrectLength(text))        {            rtn = true;        }        return rtn;    }    public bool ValidateTextAndFormat(string text)    {        bool rtn = false;        if (IsStringCorrectLength(text))        {            text = text.ToUpper();            rtn = true;        }        return rtn;    }    private bool IsStringCorrectLength(string text)    {        bool rtn = false;        if (text.Length < 11)        {            rtn = true;        }        return rtn;    }}
查看完整描述

2 回答

?
一只萌萌小番薯

TA貢獻(xiàn)1795條經(jīng)驗(yàn) 獲得超7個(gè)贊

當(dāng)你“聞到”這應(yīng)該是單獨(dú)的問題。

  1. 驗(yàn)證問題

  2. 操縱/標(biāo)準(zhǔn)化問題

這將防止調(diào)用驗(yàn)證時(shí)的復(fù)雜性和“奇怪”的副作用(更改數(shù)據(jù)),并且它確保驗(yàn)證只關(guān)心檢查驗(yàn)證而不關(guān)心“如何”格式化數(shù)據(jù)。

如果您將它們連接在一起,那么您將無法“重用”這些組件,甚至無法干凈地測(cè)試它們。它還會(huì)鼓勵(lì)您在驗(yàn)證中添加更多操作和業(yè)務(wù)邏輯,并慢慢地削弱您的開發(fā)。


查看完整回答
反對(duì) 回復(fù) 2023-09-24
?
慕容3067478

TA貢獻(xiàn)1773條經(jīng)驗(yàn) 獲得超3個(gè)贊

也許這就是您想要采取的方法:


public class ValidationService

{

    private const int MaximumStringLength = 11;


    public bool IsStringValid(string text)

    {

        return IsStringLengthCorrect(text) && IsStringUpper(text);

    }


    public bool IsStringLengthCorrect(string text)

    {

        return text.Length < MaximumStringLength;

    }


    public bool IsStringUpper(string text)

    {

        return text.All(x => char.IsUpper(x));

    }


    public string ValidateStringLength(string text)

    {

        if (IsStringLengthCorrect(text))

        {

            return text;

        }

        else

        {

            return text.Substring(0, MaximumStringLength);

        }

    }


    public string ValidateStringUpper(string text)

    {

        if (IsStringUpper(text))

        {

            return text;

        }

        else

        {

            return text.ToUpper();

        }

    }

}

在我看來,驗(yàn)證類應(yīng)該只檢查并返回文本是否有效。


無論如何,通過良好的命名、順序和方法,您可以提供返回有效輸入的方法。


查看完整回答
反對(duì) 回復(fù) 2023-09-24
  • 2 回答
  • 0 關(guān)注
  • 183 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)