国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

簡單了解JavaScript中常見的反模式

2024-05-06 15:37:38
字體:
來源:轉載
供稿:網友

前言

反模式 是指對反復出現的設計問題的常見的無力而低效的設計模式,俗話說就是重蹈覆轍。 這篇文章描述了 JavaScript 中常見的一些反模式,以及避免它們的辦法。

硬編碼

硬編碼(Hard-Coding)的字符串、數字、日期…… 所有能寫死的東西都會被人寫死。 這是一個婦孺皆知的反模式,同時也是最廣泛使用的反模式。 硬編碼中最為典型的大概是 平臺相關代碼(Platform-Related), 這是指特定的機器或環境下才可以正常運行的代碼, 可能是只在你的機器上可以運行,也可能是只在 Windows 下可以運行。

例如在 npm script 中寫死腳本路徑 /Users/harttle/bin/fis3, 原因可能是安裝一次非常困難,可能是為了避免重復安裝,也可能僅僅是因為這樣好使。 不管怎樣,這會讓所有同事來找你問“為什么我這里會報錯”。 解決辦法就是把它放到依賴管理,如果有特定的版本要求可以使用 package-lock,如果實在搞不定可以視為外部依賴可以放到本地配置文件并從版本控制(比如 Git) 移除。

例如在 cli 工具中寫死特殊文件夾 /tmp, ~/.cache,或者路徑分隔符 // 或 /。 這類字符串一般可以通過 Node.js 內置模塊(或其他運行時 API)來得到, 比如使用 os.homedir, os.tmpdir, path.sep 等。

重復代碼

重復代碼(Duplication)在業務代碼中尤為常見,初衷幾乎都是維護業務的穩定性。 舉個例子:在頁面 A 中需要一個漂亮的搜索框,而頁面 B 中恰好有一個。 這時程序員小哥面臨一個艱難的選擇(如果直接拷貝還會有些許感到不安的話):

把 B 拷貝一份,改成 A 想要的樣子。 把 B 中的搜索框重構到 C,B 和 A 引用這份代碼。

由于時間緊迫希望早點下班,或者由于改壞 B 需要承擔責任 (PM:讓你做 A 為啥 B 壞了?回答這個問題比較復雜,這里先跳過), 經過一番思考后決定采取方案 2。

至此整個故事進行地很自然也很順利,這大概就是重復代碼被廣泛使用的原因。 這個故事中有幾點需要質疑:

B 這么容易被改壞,說明 B 的作者 并未考慮復用。這時不應復用 B 的代碼,除非決定接手維護它。 B 改壞的責任不止程序員小哥:B 的作者是否有 編寫測試,測試人員是否 回歸測試 B 頁面? 時間緊迫不必然導致反模式的出現,不可作為說服自己的原因。短期方案也存在優雅實現。

解決辦法就是:抽取 B 的代碼重新開發形成搜索框組件 C,在 A 頁面使用它。 同時提供給日后的小伙伴使用,包括敦促 B 的作者也遷移到 C 統一維護。

假 AMD

模塊化本意是指把軟件的各功能分離到獨立的模塊中,每個模塊包含完整的一個細分功能。 在 JavaScript 中則是特指把腳本切分為獨立上下文的,可復用的代碼單元。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 诏安县| 张北县| 莆田市| 关岭| 仪陇县| 库车县| 陇川县| 原阳县| 辽宁省| 高淳县| 岑巩县| 泰宁县| 石景山区| 广德县| 汶川县| 平远县| 宜都市| 屏山县| 崇义县| 清水河县| 平利县| 耒阳市| 新泰市| 台中县| 伊宁市| 兴安县| 共和县| 含山县| 六盘水市| 武陟县| 乐昌市| 峨边| 桂阳县| 西昌市| 措美县| 吉隆县| 山西省| 龙里县| 游戏| 汝州市| 玉屏|