亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

目錄
為什麼global是代碼氣味
用功能參數(shù)替換全局變量和返回
使用類管理共享狀態(tài)
利用關(guān)閉狀態(tài)訪問的關(guān)閉
什麼時候global接受?
底線
首頁 後端開發(fā) php教程 反對'全局”關(guān)鍵字的情況:清潔劑的策略

反對'全局”關(guān)鍵字的情況:清潔劑的策略

Jul 25, 2025 am 11:36 AM
PHP Variables

避免不必要地使用全局關(guān)鍵字,因為它會導(dǎo)致更難測試,調(diào)試和維護的代碼;而是使用函數(shù)參數(shù)並返回值明確傳遞數(shù)據(jù)。 2.用僅取決於其輸入的純函數(shù)替換全局變量,並產(chǎn)生沒有副作用的輸出,從而提高可預(yù)測性和可檢驗性。 3.當(dāng)需要修改相關(guān)數(shù)據(jù),啟用可重用性並避免全局名稱空間污染時,使用類封裝和管理共享狀態(tài)。 4。在不依賴基於全球或基於班級的狀態(tài)的情況下,跨越函數(shù)調(diào)用的私人,受控狀態(tài)的利用封閉。 5。為罕見情況(例如簡單腳本或臨時模塊級補?。┍A羧?,但始終考慮是否可以通過參數(shù)傳遞,返回值或封裝來實現(xiàn)相同的腳步。 6.將全球視為備用輪胎 - 在緊急情況下使用,但不適合定期使用,因為它可以避免促進清潔劑,更模塊化和可維護的代碼設(shè)計。

反對全局”關(guān)鍵字的情況:清潔劑的策略

您不需要像您想像的那樣經(jīng)常需要global關(guān)鍵字,而過度使用它是您的代碼更可讀,可測試和可維護的標(biāo)誌。儘管global在Python中佔有一席之地,但太快就能遇到它,通常會導(dǎo)致糾結(jié),難以遵循的邏輯。這是通過避免不必要的全球狀態(tài)編寫清潔代碼的方法。

反對全局”關(guān)鍵字的情況:清潔劑的策略

為什麼global是代碼氣味

global關(guān)鍵字使您可以修改一個函數(shù)中的全局範(fàn)圍中定義的變量。但是,當(dāng)您使用它時,您將其緊密耦合到外部狀態(tài)。這使您的代碼:

  • 更難測試(您需要在測試之間管理全球狀態(tài))
  • 很難推理(誰改變了什麼,什麼時候?)
  • 在並發(fā)或遞歸上下文中容易出現(xiàn)錯誤
  • 較少可重複使用(沒有特定的全局變量,該功能將無法使用)

而不是修改全局變量,而是針對純函數(shù)- 僅取決於其輸入並返回沒有副作用的值的功能。

反對全局”關(guān)鍵字的情況:清潔劑的策略

用功能參數(shù)替換全局變量和返回

最簡單,最有效的策略之一是明確傳遞數(shù)據(jù)並返回結(jié)果。

而不是這個:

反對全局”關(guān)鍵字的情況:清潔劑的策略
計數(shù)器= 0

def增量():
    全球計數(shù)器
    計數(shù)器= 1

這樣做:

 def增量(計數(shù)器):
    返回計數(shù)器1

# 用法
計數(shù)器= 0
計數(shù)器=增量(計數(shù)器)

現(xiàn)在,該功能是獨立的,可預(yù)測的且易於測試的:

斷言增量(5)== 6

如果您管理更複雜的狀態(tài),請考慮返回多個值或使用字典或數(shù)據(jù)級:

 def Process_user(數(shù)據(jù),得分):
    返回{** data,'passeded':true},得分10

使用類管理共享狀態(tài)

當(dāng)您真正需要通過多個函數(shù)調(diào)用維護和修改狀態(tài)時,類通常比全局變量更好。

而不是:

 user_name =“”
login_status = false

DEF登錄(名稱):
    global user_name,login_status
    user_name =名稱
    login_status = true

使用類:

班級用戶:
    def __init __(自我):
        self.user_name =“”
        self.login_status = false

    def登錄(self,name):
        self.user_name =名稱
        self.login_status = true

# 用法
session =用戶()
session.login(“愛麗絲”)

這種方法囊括了狀態(tài),避免了全球污染,並使擁有多個獨立實例變得容易。

利用關(guān)閉狀態(tài)訪問的關(guān)閉

有時您想隱藏狀態(tài),但仍然避免全球範(fàn)圍。關(guān)閉使您將數(shù)據(jù)封裝在嵌套功能範(fàn)圍內(nèi)。

 def create_counter():
    計數(shù)= 0
    def增量():
        非局部計數(shù)
        計數(shù)= 1
        返回計數(shù)
    返回增量

# 用法
counter = create_counter()
打?。ㄓ嫈?shù)器())#1
打印(counter())#2

在這裡, count不是全局,不是班級的一部分,而是跨呼叫的狀態(tài),而沒有global 。它是私人的,可重複使用的和線程的(只要您不共享關(guān)閉)。

什麼時候global接受?

在極少數(shù)情況下, global有意義:

  • 在測試過程中修補模塊級級常數(shù)(儘管MonkeyPatching工具更好)
  • 清晰度並不關(guān)鍵的簡單腳本或原型
  • 單例或配置標(biāo)誌(但請考慮使用配置對象)

即使那樣,請問:我可以通過它嗎?我可以退還嗎?我可以封裝嗎?

底線

避免global會將您推向更好的設(shè)計:較小的功能,更清晰的依賴性和更模塊化的代碼。您將更少編寫錯誤,並使您的代碼更易於測試和重複使用。

重構(gòu)全局依賴性對參數(shù),返回值,類或關(guān)閉。額外的幾行代碼值得長期清晰。

基本上,將global視為備用輪胎 - 可用來捏,但不適合日常駕駛。

以上是反對'全局”關(guān)鍵字的情況:清潔劑的策略的詳細內(nèi)容。更多資訊請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Laravel 教程
1597
29
PHP教程
1488
72
通過參考與函數(shù)中的值傳遞變量 通過參考與函數(shù)中的值傳遞變量 Jul 26, 2025 am 09:49 AM

Passbyvaluemeansacopyofthedataispassed,sochangesinsidethefunctiondonotaffecttheoriginalvariable,asseeninCwithprimitivesorPythonwithimmutabletypes.2.Passbyreferencemeansthefunctionreceivesadirectreferencetotheoriginal,somodificationsinsidethefunctiona

PHP變量的生命週期:從分配到垃圾收集 PHP變量的生命週期:從分配到垃圾收集 Jul 24, 2025 pm 10:49 PM

APHPvariable'slifecyclebeginswithmemoryallocationviazvalcreation,whichstoresthevalue,type,referencecount,andreferenceflag.2.Whenvariablesareassignedorshared,PHPusesreferencecountingandcopy-on-writetooptimizememoryusage,onlyduplicatingdatawhennecessar

反對'全局”關(guān)鍵字的情況:清潔劑的策略 反對'全局”關(guān)鍵字的情況:清潔劑的策略 Jul 25, 2025 am 11:36 AM

Avoidusingtheglobalkeywordunnecessarilyasitleadstocodethatishardertotest,debug,andmaintain;instead,usefunctionparametersandreturnvaluestopassdataexplicitly.2.Replaceglobalvariableswithpurefunctionsthatdependonlyontheirinputsandproduceoutputswithoutsi

使用PHP打字屬性使您的課程現(xiàn)代化 使用PHP打字屬性使您的課程現(xiàn)代化 Jul 26, 2025 am 09:49 AM

TypedpropertiesinPHP7.4 allowdirecttypedeclarationforclassproperties,improvingreliability,IDEsupport,andcodeclarity;2.Theyenforcetypesafety,reducebugs,enablebetterautocompletion,andminimizeconstructorchecks;3.Tomigrate,useexisting@vardocblockstoaddty

揭開PHP的變量變量($$ var') 揭開PHP的變量變量($$ var') Jul 25, 2025 am 04:42 AM

變量變量通過$$var語法將一個變量的值作為另一個變量的名稱使用;2.例如當(dāng)$myVar為"hello"時,$$myVar等價於$hello,並可為其賦值;3.實際應(yīng)用中可用於動態(tài)處理表單數(shù)據(jù),如用foreach遍歷$_POST並用$$key創(chuàng)建對應(yīng)變量;4.存在可讀性差、安全風(fēng)險高、破壞靜態(tài)分析等問題,尤其避免對用戶輸入使用$$;5.推薦使用數(shù)組或?qū)ο筇娲鐚?shù)據(jù)存入$data數(shù)組而非創(chuàng)建動態(tài)變量;6.使用${$var}花括號語法可提高代碼清晰度,尤其在復(fù)雜場景中。變量變

PHP常數(shù)與變量:不變性指南 PHP常數(shù)與變量:不變性指南 Jul 25, 2025 pm 05:37 PM

constantscannotbechangedafterDefinition,whervariablescan; 1.VariablestArtwith $,可恢復(fù),範(fàn)圍,範(fàn)圍,andidealfordynamicdata; 2.constantsusedefine(constantsusedefine ofconst,haveno $,haveno $,haveno $,atemmmutable as pemmmmmutable'esmmmmmtable,全球範(fàn)圍內(nèi),全球範(fàn)圍內(nèi),且forfixeDValuseLikeNunchforforfforFforforForfortorlationlation; 3.UseNforation;

`iSSET()`,`empty()`和`is_null()的細微差別用於可變驗證 `iSSET()`,`empty()`和`is_null()的細微差別用於可變驗證 Jul 24, 2025 pm 10:15 PM

ISSET()checksifavariableisdeclaredAndNotNull,returningTrueForEmptyStrings,0,'0',false和emptertyrays; useittoconfirmavariableExistSistsandHasbeEnset,sustAsAsverifyingingformInputslike $ _post $ _post $ _post ['email'emage''] 2.ementify('emplienify()

See all articles