亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

習(xí)題 44: 給你的游戲打分?

這節(jié)練習(xí)的目的是檢查評(píng)估你的游戲。也許你只完成了一半,卡在那里沒(méi)有進(jìn)行下去,也許你勉強(qiáng)做出來(lái)了。不管怎樣,我們將串一下你應(yīng)該弄懂的一些東西,并確認(rèn)你的游戲里有使用到它們。我們將學(xué)習(xí)如何用正確的格式構(gòu)建 class,使用 class 的一些通用習(xí)慣,另外還有很多的“書(shū)本知識(shí)”讓你學(xué)習(xí)。

為什么我會(huì)讓你先行嘗試,然后才告訴你正確的做法呢?因?yàn)閺默F(xiàn)在開(kāi)始你要學(xué)會(huì)“自給自足”,以前是我牽著你前行,以后就得靠你自己了。后面的習(xí)題我只會(huì)告訴你你的任務(wù),你需要自己去完成,在你完成后我再告訴你如何可以改進(jìn)你的作業(yè)。

一開(kāi)始你會(huì)覺(jué)得很困難并且很不習(xí)慣,但只要堅(jiān)持下去,你就會(huì)培養(yǎng)出自己解決問(wèn)題的能力。你還會(huì)找出創(chuàng)新的方法解決問(wèn)題,這比從課本中拷貝解決方案強(qiáng)多了。

函數(shù)的風(fēng)格?

以前我教過(guò)的怎樣寫(xiě)好函數(shù)的方法一樣是適用的,不過(guò)這里要添加幾條:

  • 由于各種各樣的原因,程序員將 class (類(lèi))里邊的函數(shù)稱作 method (方法)。很大程度上這只是個(gè)市場(chǎng)策略(用來(lái)推銷(xiāo) OOP),不過(guò)如果你把它們稱作“函數(shù)”的話,是會(huì)有啰嗦的人跳出來(lái)糾正你的。如果你覺(jué)得他們太煩了,你可以告訴他們從數(shù)學(xué)方面演示一下“函數(shù)”和“方法”究竟有什么不同,這樣他們會(huì)很快閉嘴的。
  • 在你使用 class 的過(guò)程中,很大一部分時(shí)間是告訴你的 class 如何“做事情”。給這些函數(shù)命名的時(shí)候,與其命名成一個(gè)名詞,不如命名為一個(gè)動(dòng)詞,作為給 class 的一個(gè)命令。就和 list 的 pop (拋出)函數(shù)一樣,它相當(dāng)于說(shuō):“嘿,列表,把這東西給我 pop 出去?!彼拿植皇?remove_from_end_of_list ,因?yàn)榧词顾墓δ艿拇_是這樣,這一串字符也不是一個(gè)命令。
  • 讓你的函數(shù)保持簡(jiǎn)單小巧。由于某些原因,有些人開(kāi)始學(xué)習(xí) class 后就會(huì)忘了這一條。

類(lèi)的風(fēng)格?

  • 你的 class 應(yīng)該使用 “camel case(駝峰式大小寫(xiě))”,例如你應(yīng)該使用 SuperGoldFactory 而不是 super_gold_factory。

  • 你的 __init__ 不應(yīng)該做太多的事情,這會(huì)讓 class 變得難以使用。

  • 你的其它函數(shù)應(yīng)該使用 “underscore format(下劃線隔詞)”,所以你可以寫(xiě) my_awesome_hair,

    而不是 myawesomehair 或者 MyAwesomeHair 。

  • 用一致的方式組織函數(shù)的參數(shù)。如果你的 class 需要處理 users、dogs、和 cats,就保持這個(gè)次序(特別情況除外)。如果一個(gè)函數(shù)的參數(shù)是 (dog, cat, user) ,另一個(gè)的是 (user, cat, dog) ,這會(huì)讓函數(shù)使用起來(lái)很困難。

  • 不要對(duì)全局變量或者來(lái)自模組的變量進(jìn)行重定義或者賦值,讓這些東西自顧自就行了。

  • 不要一根筋式地維持風(fēng)格一致性,這是思維力底下的妖怪嘍啰做的事情。一致性是好事情,不過(guò)愚蠢地跟著別人遵從一些白癡口號(hào)是錯(cuò)誤的行為——這本身就是一種壞的風(fēng)格。好好為自己照想把。

  • 永遠(yuǎn)永遠(yuǎn)都使用 class Name(object) 的方式定義 class,否則你會(huì)碰到大麻煩。

代碼風(fēng)格?

  • 為了以方便他人閱讀,為自己的代碼字符之間留下一些空白。你將會(huì)看到一些很差的程序員,他們寫(xiě)的代碼還算通順,但字符之間沒(méi)有任何空間。這種風(fēng)格在任何編程語(yǔ)言中都是壞習(xí)慣,人的眼睛和大腦會(huì)通過(guò)空白和垂直對(duì)齊的位置來(lái)掃描和區(qū)隔視覺(jué)元素,如果你的代碼里沒(méi)有任何空白,這相當(dāng)于為你的代碼上了迷彩裝。如果一段代碼你無(wú)法朗讀出來(lái),那么這段代碼的可讀性可能就有問(wèn)題。如你找不到讓某個(gè)東西易用的方法,試著也朗讀出來(lái)。這樣不僅會(huì)逼迫你慢速而且真正仔細(xì)閱讀過(guò)去,還會(huì)幫你找到難讀的段落,從而知道那些代碼的易讀性需要作出改進(jìn)。
  • 學(xué)著模仿別人的風(fēng)格寫(xiě) Python 程序,直到哪天你找到你自己的風(fēng)格為止。
  • 一旦你有了自己的風(fēng)格,也別把它太當(dāng)回事。程序員工作的一部分就是和別人的代碼打交道,有的人審美就是很差。相信我,你的審美某一方面一定也很差,只是你從未意識(shí)到而已。
  • 如果你發(fā)現(xiàn)有人寫(xiě)的代碼風(fēng)格你很喜歡,那就模仿他們的風(fēng)格。

好的注釋?

  • 有程序員會(huì)告訴你,說(shuō)你的代碼需要有足夠的可讀性,這樣你就無(wú)需寫(xiě)注釋了。他們會(huì)以自己接近官腔的聲音說(shuō)“所以你永遠(yuǎn)都不應(yīng)該寫(xiě)代碼注釋。”這些人要么是一些顧問(wèn)型的人物,如果別人無(wú)法使用他們的代碼,就會(huì)付更多錢(qián)給他們讓他們解決問(wèn)題。要么他們能力不足,從來(lái)沒(méi)有跟別人合作過(guò)。別理會(huì)這些人,好好寫(xiě)你的注解。
  • 寫(xiě)注解的時(shí)候,描述清楚為什么你要這樣做。代碼只會(huì)告訴你“這樣實(shí)現(xiàn)”,而不會(huì)告訴你“為什么要這樣實(shí)現(xiàn)”,而后者比前者更重要。
  • 當(dāng)你為函數(shù)寫(xiě)文檔注解的時(shí)候,記得為別的代碼使用者也寫(xiě)些東西。你不需要狂寫(xiě)一大堆,但一兩句話謝謝這個(gè)函數(shù)的用法還是很有用的。
  • 最后要說(shuō)的是,雖然注解是好東西,太多的注解就不見(jiàn)得是了。而且注解也是需要維護(hù)的,你要盡量讓注解短小精悍一語(yǔ)中的,如果你對(duì)代碼做了更改,記得檢查并更新相關(guān)的注解,確認(rèn)它們還是正確的。

為你的游戲評(píng)分?

現(xiàn)在我要求你假裝成是我,板起臉來(lái),把你的代碼打印出來(lái),然后拿一支紅筆,把代碼中所有的錯(cuò)誤都標(biāo)出來(lái)。你要充分利用你在本章以及前面學(xué)到的知識(shí)。等你批改完了,我要求你把所有的錯(cuò)誤改對(duì)。這個(gè)過(guò)程我需要你多重復(fù)幾次,爭(zhēng)取找到更多的可以改進(jìn)的地方。使用我前面教過(guò)的方法,把代碼分解成最細(xì)小的單元一一進(jìn)行分析。

這節(jié)練習(xí)的目的是訓(xùn)練你對(duì)于細(xì)節(jié)的關(guān)注程度。等你檢查完自己的代碼,再找一段別人的代碼用這種方法檢查一遍。把代碼打印出來(lái),檢查出所有代碼和風(fēng)格方面的錯(cuò)誤,然后試著在不改壞別人代碼的前提下把它們修改正確、

這周我要求你的事情就是批改和糾錯(cuò),包含你自己的代碼和別人的代碼,再?zèng)]有別的了。這節(jié)習(xí)題難度還是挺大,不過(guò)一旦你完成了任務(wù),你學(xué)過(guò)的東西就會(huì)牢牢記在腦中。