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

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

什么是神奇的數(shù)字,為什么它是壞的?

什么是神奇的數(shù)字,為什么它是壞的?

什么是神奇的數(shù)字,為什么它是壞的?什么是魔術(shù)數(shù)字?為甚麼要避免呢?有合適的案例嗎?
查看完整描述

4 回答

?
拉莫斯之舞

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超10個贊

幻數(shù)是代碼中數(shù)字的直接用法。

例如,如果您有(在Java中):

public class Foo {
    public void setPassword(String password) {
         // don't do this
         if (password.length() > 7) {
              throw new InvalidArgumentException("password");
         }
    }}

這應(yīng)重新考慮到:

public class Foo {
    public static final int MAX_PASSWORD_SIZE = 7;

    public void setPassword(String password) {
         if (password.length() > MAX_PASSWORD_SIZE) {
              throw new InvalidArgumentException("password");
         }
    }}

它提高了代碼的可讀性,并且更易于維護(hù)。假設(shè)我在GUI中設(shè)置了密碼字段的大小。如果我使用一個神奇的數(shù)字,每當(dāng)最大尺寸發(fā)生變化時,我必須在兩個代碼位置進(jìn)行更改。如果我忘了一個,這會導(dǎo)致不一致。

JDK中滿是示例,如IntegerCharacterMath上課。

PS:像FindBugs和PMD這樣的靜態(tài)分析工具可以在代碼中檢測到神奇數(shù)字的使用,并建議進(jìn)行重構(gòu)。


查看完整回答
反對 回復(fù) 2019-05-30
?
人到中年有點(diǎn)甜

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

魔術(shù)數(shù)字是一個硬編碼的值,可能會在稍后階段改變,但因此很難更新。

例如,假設(shè)您有一個頁面,它在“您的訂單”概述頁中顯示最后50個訂單。50是這里的魔術(shù)數(shù)字,因?yàn)樗皇峭ㄟ^標(biāo)準(zhǔn)或慣例來設(shè)定的,這是一個你在規(guī)范中列出的原因組成的數(shù)字。

現(xiàn)在,您要做的是在不同的地方擁有50-您的SQL腳本(SELECT TOP 50 * FROM orders),您的網(wǎng)站(最后50個訂單),您的訂單登錄(for (i = 0; i < 50; i++)可能還有很多其他地方。

現(xiàn)在,當(dāng)某人決定改變50到25的時候會發(fā)生什么呢?還是75歲?或者153?你現(xiàn)在必須在所有的地方替換50,你很可能會錯過它。查找/替換可能不起作用,因?yàn)?0可能用于其他事情,而盲目地用25替換50可能會產(chǎn)生其他一些不良副作用(例如,Session.Timeout = 50調(diào)用,也被設(shè)置為25,用戶開始報告太頻繁的超時)。

此外,代碼可能很難理解,即“if a < 50 then bla-如果您在一個復(fù)雜的函數(shù)中遇到這種情況,其他不熟悉代碼的開發(fā)人員可能會問自己“WTF是50?”

這就是為什么最好把這些模棱兩可的任意數(shù)字放在第一位-“const int NumOrdersToDisplay = 50“,因?yàn)檫@樣可以提高代碼的可讀性(”if a < NumOrdersToDisplay“,這也意味著您只需要在一個定義良好的地方更改它。

魔術(shù)數(shù)字合適的地方是通過標(biāo)準(zhǔn)定義的一切,即SmtpClient.DefaultPort = 25TCPPacketSize = whatever(不確定這是否標(biāo)準(zhǔn)化)。而且,僅在1函數(shù)中定義的所有內(nèi)容都可能是可以接受的,但這取決于上下文。


查看完整回答
反對 回復(fù) 2019-05-30
  • 4 回答
  • 0 關(guān)注
  • 768 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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