日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

編寫Linux實(shí)用程序的藝術(shù)

Linux 和其他類 UNIX 系統(tǒng)總是附帶了大量的工具,它們執(zhí)行從顯而易見的到不可思議的廣泛功能 。類 UNIX 編程環(huán)境的成功很大程度上歸功于工具的高品質(zhì)和選擇,以及這些工具之間相互銜接的簡(jiǎn)易性 。
作為開發(fā)人員,您可能會(huì)發(fā)現(xiàn)現(xiàn)有實(shí)用程序并不總是能夠解決問題 。雖然能夠通過結(jié)合使用現(xiàn)有實(shí)用程序來容易地解決許多問題,然而解決其他問題卻至少需要一些實(shí) 際的編程工作 。這些后面的任務(wù)通常是創(chuàng)建新實(shí)用程序的候選任務(wù),結(jié)合現(xiàn)有實(shí)用程序來創(chuàng)建新實(shí)用程序可以通過做最少的工作來解決問題 。本文考察優(yōu)秀實(shí)用程序所具有的品質(zhì),以及設(shè)計(jì)這種實(shí)用程序所經(jīng)歷的過程 。
優(yōu)秀的實(shí)用程序具有哪些品質(zhì)?
Kernighan & Pike 所著的 The UNIX Programming Environment 一書中包含了對(duì)此問題的精彩討論 。優(yōu)秀的實(shí)用程序是把自己的工作做得盡可能好的實(shí)用程序 。它必須與其他實(shí)用程序配合融洽;必須能夠容易地與其他實(shí)用程序結(jié)合使用 。無法與其他實(shí)用程序結(jié)合使用的程序不是實(shí)用程序,而是應(yīng)用程序 。
實(shí)用程序應(yīng)該允許您根據(jù)手邊的材料廉價(jià)而容易地構(gòu)建一次性的應(yīng)用程序 。許多人認(rèn)為實(shí)用程序就像是工具箱中的工具 。設(shè)計(jì)實(shí)用程序的目標(biāo)不是為了讓單個(gè)工具來做所有事情,而是為了擁有一組工具,其中每個(gè)工具都盡可能好地做一件事情 。
有些實(shí)用程序自身就是相當(dāng)有用的,而其他實(shí)用程序則必須與一系列實(shí)用程序配合使用 。前者的例子包括 sort 和 grep 。另一方面,xargs 除了與其他實(shí)用程序(最常見的是 find)配合使用外,很少單獨(dú)使用 。
使用什么語言來編寫實(shí)用程序?
大多數(shù) UNIX 系統(tǒng)實(shí)用程序都是用 C 語言來編寫的 。本文中的例子使用 Perl 和 sh 。應(yīng)該使用恰當(dāng)?shù)墓ぞ邅碜銮‘?dāng)?shù)氖虑?。如果您對(duì)某個(gè)實(shí)用程序使用得足夠頻繁,那么用編譯型語言來編寫它的成本也許能通過性能提升來獲得回報(bào) 。另一方面,對(duì)于程序的工作負(fù)荷很輕這種相當(dāng)普遍的情況,使用腳本語言也許會(huì)提供更快的開發(fā)速度 。
如果無法肯定,您應(yīng)該使用自己最了解的語言 。至少當(dāng)您在對(duì)某個(gè)實(shí)用程序進(jìn)行原型化,或在弄清它是如何有用時(shí),程序員效率將優(yōu)先于性能調(diào)整 。大多數(shù) UNIX 系統(tǒng)實(shí)用程序都是用 C 編寫的,這只是因?yàn)檫@些實(shí)用程序使用得足夠頻繁,以致考慮效率比考慮開發(fā)成本更加重要 。Perl 和 sh(或 ksh)可能是用于快速原型化的很好語言 。對(duì)于與其他程序配合實(shí)用的實(shí)用程序,使用 shell 來編寫它們或許要比使用更傳統(tǒng)的編程語言來編寫它們要容易一些 。另一方面,當(dāng)您希望與原始的字節(jié)交互時(shí),C 或許就是最好的選擇 。
設(shè)計(jì)實(shí)用程序
一個(gè)不錯(cuò)的經(jīng)驗(yàn)法則就是當(dāng)您第二次必須解決某個(gè)問題時(shí),首先考慮實(shí)用程序的設(shè)計(jì) 。不要對(duì)第一次編寫的一次性作品感到遺憾;您可以將它看作是一個(gè)原型 。第二次,請(qǐng)把您所需的功能與第一次所需的功能作比較 。在第三次前后,您應(yīng)該開始考慮花時(shí)間來編寫一個(gè)通用實(shí)用程序 。即使純粹的重復(fù)性任務(wù)也可能會(huì)給實(shí)用程序的開發(fā)帶來好處;例如,由于人們對(duì)嘗試以通用的方式重命名文件感到失望,于是開發(fā)了許多通用文件重命名程序 。
下面是一些實(shí)用程序設(shè)計(jì)目標(biāo);每個(gè)目標(biāo)將在下面單獨(dú)的小節(jié)中介紹 。
做好一件事情 。
成為一個(gè)過濾器 。
通用化 。
健壯 。
新穎 。
做好一件事情
做好一件事情;不要糟糕地做多件事情 。關(guān)于做好一件事情的最佳例子或許是 sort 。除了 sort 外,沒有其他 哪個(gè)實(shí)用程序具有排序功能 。基本的思想很簡(jiǎn)單:如果一次僅解決一個(gè)問題,您就能花時(shí)間把它解決好 。

推薦閱讀