笨辦法學 Python · 續 第五部分:文本解析

第五部分:文本解析

原文:Part V: Parsing Text

譯者:飛龍

協議:CC BY-NC-SA 4.0

自豪地采用谷歌翻譯

本書的這一部分將教你如何處理文本,特別是,它是文本解析的正式開始。所以我不會涉及編程語言理論的所有不同理論元素,因為這是整個大學的學位。這只是簡單而樸素的文本解析的開始,可以在許多編程環境中使用它。

大多數程序員與解析文本有著奇怪的關系。所有計算機程序設計的核心是解析,它是計算機科學中最容易理解和形式化的方向之一。解析數據在計算中無處不在。你可以在網絡協議,編譯器,電子表格,服務器,文本編輯器,圖形渲染器,以及擁有人機或其他計算機接口的任何東西中找到它。即使兩臺計算機正在發送固定的二進制協議,盡管缺少文本,仍然存在解析的層面。

我要教你解析,因為它是一種容易理解的可靠技術,可以產生可靠的結果。當你面對可靠地處理一些輸入并給出準確的錯誤時,你將求助于解析器,而不是手動編寫一個。另外,一旦學習了解析的基礎,就會更容易學習新的編程語言,因為你可以理解他們的語法。

代碼覆蓋簡介

在這部分中,你仍然應該嘗試拆解和剖析你編寫的任何代碼。我在這部分中增加的新東西,是代碼覆蓋的概念。代碼覆蓋的想法是,你實際上不知道在編寫自動測試時是否測試了大多數情況。你可以使用形式邏輯來開發一個理論,即你覆蓋了一切東西,但是我們知道人類的大腦非常難以在自己的思維中找到缺陷。這就是為什么你在這本書中使用“創造然后批判”的循環。在嘗試創建某些東西的時候,你很難分析自己的想法。

代碼覆蓋是一種方法,至少能夠了解你在應用中測試的東西。它不會找到你所有的缺陷,但它至少會顯示,你已經命中每個可能的代碼分支。如果沒有覆蓋,你實際上不知道你是否測試了每個分支。一個非常好的例子是故障處理。大多數自動測試僅測試最可靠的條件,并且不會測試錯誤處理。當你運行覆蓋時,你會發現你忘記的所有方法,來測試錯誤處理代碼。

代碼覆蓋也可以幫助你避免過度測試代碼。我曾經從事測試驅動開發(TDD)愛好者的項目,他們因 12/1 的測試/代碼比而感到自豪(這意味著每一行代碼都有 12 行測試)。一個簡單的代碼覆蓋分析顯示,他們只測試了 30% 的代碼,其中許多線路以同樣的方式進行了 6~20 次的測試。同時,像數據庫查詢中的異常情況那樣的簡單錯誤是完全未經測試的,并導致頻繁的錯誤。最終,這些測試套件成為一種負擔,阻止了項目的成長,并且只會吞掉開發人員的工作安排。難怪這么多敏捷咨詢公司討厭代碼覆蓋。

在本練習的視頻中,你將看到我運行測試,并使用代碼覆蓋來確認我正在測試什么。我要求你做同樣的事情,并且有使其變得容易的工具。我將向你展示如何閱讀測試覆蓋結果,以及如何確保你高效地測試你可以測試的一切東西。目標是擁有一個徹底的自動化測試套件,但不會浪費你的努力,所以你不會連續測試 12 次只有 30% 的代碼。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,937評論 18 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,335評論 25 708
  • 發現 關注 消息 iOS 第三方庫、插件、知名博客總結 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 12,241評論 4 61
  • 明天早上凌晨1點,蘋果就要陸陸續續進行 iOS 11 正式版的推送了!下面我們來看看 iOS 11有哪些新的變化。...
    是夏目啊閱讀 154評論 0 0
  • — 記 6月5日世界環境日-金山“兩新”環保公益定向DIY活動 周末馬上就要結束了,明日又得上班去了。...
    幾花閱讀 361評論 0 0