笨辦法學(xué) Python · 續(xù) 練習(xí) 27:`tr`

練習(xí) 27:tr

原文:Exercise 27: tr

譯者:飛龍

協(xié)議:CC BY-NC-SA 4.0

自豪地采用谷歌翻譯

這個練習(xí)是繼續(xù)學(xué)習(xí) TDD(又稱“測試優(yōu)先”)風(fēng)格的開發(fā)悬垃。知道如何這樣編程很重要茶宵,因為它在許多地方使用蹬跃,但如前所述笛厦,它有其局限性。在實現(xiàn)tr命令時建车,您將再次使用 TDD 進(jìn)行練習(xí)扩借。要十分確定,你是先嚴(yán)格編寫測試缤至,然后是代碼潮罪,然后再審計兩個東西。

在上一個練習(xí)中领斥,我讓你逐步構(gòu)建測試用例和代碼嫉到。這通常是最不容易出錯的開發(fā)方法,但它不能幫助您更好地分析自己的代碼月洛。在這個練習(xí)中何恶,你會做一些略微不同的事情,因為我將會寫一個完整的測試用例嚼黔,進(jìn)行審計细层,然后編寫整個代碼惜辑,進(jìn)行審計,并通過運(yùn)行測試來確認(rèn)審計疫赎。

這意味著韵丑,在這個練習(xí)中你的流程是這樣的:

  • 嘗試編寫大部分 TDD 測試用例。
  • 審計測試用例并確認(rèn)它是否編寫正確虚缎。
  • 運(yùn)行測試以確保它們失敗,但是查找任何語法錯誤钓株。此時您不應(yīng)該有語法錯誤实牡。
  • 為測試用例編寫代碼,但不要運(yùn)行測試轴合。
  • 審計您的代碼创坞,并嘗試在運(yùn)行測試之前查看有多少缺陷。

您將在下一個練習(xí)中受葛,使用此過程來跟蹤您的審計技能题涨、測試技能的指標(biāo),并更好地控制您編寫代碼的方式总滩。

挑戰(zhàn)練習(xí)

tr工具是翻譯字符流的有效方式纲堵。盡管非常簡單,它可以對字符做一些非常復(fù)雜的事情闰渔。例如席函,您可以使用tr,以一行代碼冈涧,獲取history中使用的單詞的頻率:

history | tr -cs A-Za-z '\n' | tr A-Z a-z | sort | uniq -c | sort -rn

似乎很炫酷茂附,但是 Doug McIlroy 曾經(jīng)使用這一行來辯稱,高德納(Donald Knuth)編寫的一個類似的程序太長督弓。Knuth 的實現(xiàn)是“10頁”营曼,從頭開始構(gòu)建一切。Doug 的一行只是使用標(biāo)準(zhǔn)的 Unix 工具來做同樣的事情愚隧。這展示了 Unix 的管道工具的力量和tr的翻譯文本的能力蒂阱。

使用手冊頁和任何其他東西,弄清tr命令的作用狂塘。還有一個同名的 Python 項目蒜危,但是我會告訴你要避開它,直到你完成實現(xiàn)睹耐,所以你可以稍后再比較這個項目辐赞。同時不要忘記,為此你需要一個整體的項目硝训,它應(yīng)該是測試完成的 TDD 風(fēng)格响委,就像我開始的描述的那樣新思。

45 分鐘的批判

我希望你繼續(xù)使用45分鐘的時間,但是有一個對這種工作方式的很大批評:你不能進(jìn)入擴(kuò)展的專注流程赘风。在短時間內(nèi)工作夹囚,像這樣,在你需要處理大量工作的邀窃,以及必須加快步伐時有所幫助荸哟。這種情況發(fā)生在工作真的很無聊,沒有樂趣的時候瞬捕。我正在讓你使用45分鐘的時間塊來加快自己的速度鞍历,但是我們也會在稍后使用它們,來收集一些指標(biāo)肪虎,有關(guān)如何在時間中工作劣砍,來進(jìn)行后續(xù)分析。

但我會提醒你扇救,最好的編程是在專注的狀態(tài)中完成的刑枝。這就是,你的注意力在幾個小時之內(nèi)高度集中迅腔,失去所有的時間感装畅,直到凌晨 5 點(diǎn),意識到你度過了一整夜沧烈。這種強(qiáng)烈的專注使編程對我來說非常愉快洁灵,但是當(dāng)您對您正在做的事情很感興趣時,它真的是可持續(xù)的掺出。當(dāng)您需要處理別人的糟糕的代碼庫時徽千,這個現(xiàn)象往往不會發(fā)生。在這些情況下汤锨,您需要一個不同的策略双抽,加快你的工作并讓你擺脫困境,而不會損耗你的興致闲礼。這就是 45 分鐘的時間塊的作用牍汹。

最后,建立你進(jìn)入狀態(tài)并集中精力幾個小時的能力柬泽,一個方法是從短暫的時間開始慎菲,然后慢慢增加它們,直到你可以忍受更長的時間锨并。繼續(xù)使用 45 分鐘的時間快露该,但是如果你只是忘乎所以,最后在最后幾個小時內(nèi)完成黑魔法第煮,那么就玩的開心解幼。沒有人會說你做錯了抑党,這實際上是正常的。

研究性學(xué)習(xí)

  • 這種工作方式怎么樣撵摆?你喜歡嗎底靠?嘗試闡明為什么,然后閱讀一些當(dāng)前的 TDD 的文章特铝,或它的近親行為驅(qū)動開發(fā)(BDD)暑中。

  • 你認(rèn)為通過首先審計你的代碼而不是逐步構(gòu)建它,你發(fā)現(xiàn)了更多還是更少的缺陷鲫剿?猜測它鳄逾,然后寫下來。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末牵素,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子澄者,更是在濱河造成了極大的恐慌笆呆,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,036評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件粱挡,死亡現(xiàn)場離奇詭異赠幕,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)询筏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評論 3 395
  • 文/潘曉璐 我一進(jìn)店門榕堰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人嫌套,你說我怎么就攤上這事逆屡。” “怎么了踱讨?”我有些...
    開封第一講書人閱讀 164,411評論 0 354
  • 文/不壞的土叔 我叫張陵魏蔗,是天一觀的道長。 經(jīng)常有香客問我痹筛,道長莺治,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,622評論 1 293
  • 正文 為了忘掉前任帚稠,我火速辦了婚禮谣旁,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘滋早。我一直安慰自己榄审,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,661評論 6 392
  • 文/花漫 我一把揭開白布杆麸。 她就那樣靜靜地躺著瘟判,像睡著了一般怨绣。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上拷获,一...
    開封第一講書人閱讀 51,521評論 1 304
  • 那天篮撑,我揣著相機(jī)與錄音,去河邊找鬼匆瓜。 笑死赢笨,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的驮吱。 我是一名探鬼主播茧妒,決...
    沈念sama閱讀 40,288評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼左冬!你這毒婦竟也來了桐筏?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,200評論 0 276
  • 序言:老撾萬榮一對情侶失蹤拇砰,失蹤者是張志新(化名)和其女友劉穎梅忌,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體除破,經(jīng)...
    沈念sama閱讀 45,644評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡牧氮,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,837評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了瑰枫。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片踱葛。...
    茶點(diǎn)故事閱讀 39,953評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖光坝,靈堂內(nèi)的尸體忽然破棺而出尸诽,到底是詐尸還是另有隱情,我是刑警寧澤盯另,帶...
    沈念sama閱讀 35,673評論 5 346
  • 正文 年R本政府宣布逊谋,位于F島的核電站,受9級特大地震影響土铺,放射性物質(zhì)發(fā)生泄漏胶滋。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,281評論 3 329
  • 文/蒙蒙 一悲敷、第九天 我趴在偏房一處隱蔽的房頂上張望究恤。 院中可真熱鬧,春花似錦后德、人聲如沸部宿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽理张。三九已至赫蛇,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間雾叭,已是汗流浹背悟耘。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留织狐,地道東北人暂幼。 一個月前我還...
    沈念sama閱讀 48,119評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像移迫,于是被迫代替她去往敵國和親旺嬉。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,901評論 2 355

推薦閱讀更多精彩內(nèi)容