駝峰命名法(Camel Case)與匈牙利命名法(Hungarian Notation)詳解

駝峰命名法(Camel Case)與匈牙利命名法(Hungarian Notation)詳解及對比?


?1. 駝峰命名法(Camel Case)?

?定義?

駝峰命名法(Camel Case)是一種變量、函數、類等標識符的命名方式,單詞之間?無分隔符?,每個單詞的首字母大寫(或首單詞小寫),形似駝峰。

?分類?
類型規則適用場景示例
?小駝峰(lowerCamelCase)?首單詞小寫,后續單詞首字母大寫變量、函數、方法名userName, getUserInfo()
?大駝峰(UpperCamelCase / Pascal Case)?所有單詞首字母大寫類名、接口名、類型名UserModel, StringUtils
?特點?

? ?可讀性強?:單詞間無分隔符,但首字母大寫仍能清晰區分。
? ?現代編程語言主流?:Java、JavaScript、C#、Go 等廣泛使用。
? ?不適用于常量?:常量通常用全大寫+下劃線(如 MAX_SIZE)。

?示例?
// 變量(小駝峰)
String userName = "Alice";
int maxRetryCount = 3;// 方法(小駝峰)
public void calculateTotalPrice() { ... }// 類名(大駝峰)
class UserController { ... }

?2. 匈牙利命名法(Hungarian Notation)?

?定義?

匈牙利命名法(Hungarian Notation)是一種?前綴命名法?,在變量名前添加?類型或用途縮寫?,幫助開發者快速識別變量類型或作用。

?分類?
類型規則適用場景示例
?系統匈牙利命名法?前綴表示變量類型早期 Windows API、C/C++nCount(int 類型), pBuffer(指針)
?應用匈牙利命名法?前綴表示變量用途現代代碼(較少使用)strUsername(字符串用戶名), bIsReady(布爾值)
?特點?

? ?類型/用途清晰?:通過前綴快速識別變量類型或作用。
? ?冗余、易過時?:現代 IDE 可自動提示類型,前綴可能造成代碼臃腫。
? ?不適用于強類型語言?:如 Java、C# 等已有嚴格類型系統,前綴顯得多余。

?示例?
// 系統匈牙利命名法(C/C++)
int nAge = 25;          // n = number (int)
char* pszName = "Bob";  // p = pointer, sz = string (zero-terminated)
BOOL bIsActive = TRUE;  // b = boolean// 應用匈牙利命名法(現代較少用)
String strUserName = "Alice";  // str = string
boolean bIsLoggedIn = false;   // b = boolean

?3. 兩種命名法的對比?

特性駝峰命名法匈牙利命名法
?核心思想?單詞首字母大寫,無分隔符前綴表示類型/用途
?適用語言?Java、JavaScript、C#、Go早期 C/C++、Win32 API
?可讀性?高(依賴大小寫區分)中(依賴前綴記憶)
?冗余度?高(前綴可能過時)
?現代使用?主流逐漸淘汰

?4. 現代編程建議?

  1. ?優先使用駝峰命名法?(尤其是 Java/JS/C#)。
  2. ?避免匈牙利命名法?,除非維護遺留代碼(如 Win32 API)。
  3. ?常量命名?推薦全大寫+下劃線(如 MAX_LENGTH)。
  4. ?團隊統一規范?比個人習慣更重要。
?現代代碼示例(駝峰命名法)?
// 類名(大駝峰)
class UserService {// 方法名(小駝峰)public void updateUserProfile(String userId) {// 變量名(小駝峰)int retryCount = 0;boolean isSuccess = false;}
}
?遺留代碼示例(匈牙利命名法)?
// Win32 API 風格(系統匈牙利)
HWND hWnd = CreateWindow(...);  // h = handle, Wnd = window
DWORD dwErrorCode = GetLastError();  // dw = double word (32-bit)

?總結?

  • ?駝峰命名法?:現代主流,清晰簡潔,適用于大多數語言。
  • ?匈牙利命名法?:歷史遺留,冗余但類型明確,適用于低級編程(如 C/C++)。
  • ?選擇依據?:?語言規范 > 團隊約定 > 個人習慣?。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/77443.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/77443.shtml
英文地址,請注明出處:http://en.pswp.cn/web/77443.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

keil 中優化等級的bug

一,問題描述 程序中代碼有的執行,有的不執行,仔細研究,查詢人工智能。 程序中printf打印后面的代碼不執行, 然后過幾十個函數又開始正常了。 二.分析問題 跳過函數一般又判斷和Goto等語句,其它的溢出和錯誤…

織夢dedecms網站如何修改上一篇下一篇的標題字數

一般情況下,如果你的上一篇和下一篇是2行布局就不需要限制標題的字數了,如果你要一行布局上一篇和下一篇標題過長就會打亂網頁布局,那么限制上一篇和下一篇的標題字數是需要的,避免頁面看起來雜亂不堪。 織夢dedecms網站如何修改…

信創系統 sudoers 權限配置實戰!從小白到高手

好文鏈接:實戰!銀河麒麟 KYSEC 安全中心執行控制高級配置指南 Hello,大家好啊!今天給大家帶來一篇關于信創終端操作系統中 sudoers 文件詳解的實用文章!在 Linux 系統中,sudo 是一項非常重要的權限控制機制…

《明解C語言入門篇》讀書筆記四

目錄 第四章:程序的循環控制 第一節:do語句 do語句 復合語句(程序塊)中的聲明 讀取一定范圍內的值 邏輯非運算符 德摩根定律 德摩根定律 求多個整數的和及平均值 復合賦值運算符 后置遞增運算符和后置遞減運算符 練習…

vite+vue2+elementui構建之 vite.config.js

webpack版本太低,構建依賴太多,頭大。 各種查閱資料,弄了一份直通構建vite構建elementUi核心文件, 構建基于開源若依vue2vue3版本改造,感謝開源,感謝若依。 package.json 地址 vitevue2elementui構建之…

超參數詳解:從基礎概念到優化策略的全面指南

摘要 本文深入解析機器學習中超參數的核心概念,詳細對比參數與超參數的本質區別,系統介紹學習率、隱含層數量等常見超參數類型,以及網格搜索、貝葉斯優化等主流尋優方法。結合超參數搜索的標準流程,通過具體案例演示如何高效調整…

計算機視覺與深度學習 | LSTM原理及與卡爾曼濾波的融合

長短期記憶網絡(LSTM)是一種特殊的循環神經網絡(RNN),旨在解決傳統RNN在處理長序列數據時出現的梯度消失和梯度爆炸問題。以下為你詳細介紹其基本原理: 核心思想:LSTM的核心思想是引入記憶單元和門控機制來控制信息的流動,從而解決傳統RNN的梯度消失問題。記憶單元類似…

EXCEL常用函數公式和VBA匯總第二篇

系列文章目錄 文章目錄 系列文章目錄前言一、excel公式應用1.rand函數2.rand函數隨機排序3.rand函數提取數據4.correl函數5.SUBSTITUTE函數6.MAX組合函數7.分析下班時間8.柏拉圖自動排序 總結 前言 一、excel公式應用 1.rand函數 用excel生成1-5的隨機數字,其中對…

iOS 類與對象底層原理

iOS 類與對象底層原理 文章目錄 iOS 類與對象底層原理探索對象本質objc_setProperty 源碼cls與類的關聯原理聯合體isa的類型isa_t 原理探索initIsa方法通過setClass方法中的shiftcls來驗證綁定的一個流程通過 isa & ISA_MSAK通過object_getClass通過位運算 類&類的結構…

浮點數:IEEE 754標準

IEEE 754 標準是一種由電氣和電子工程師協會(IEEE)制定的浮點數表示的標準,廣泛應用于計算機系統中,下面是詳細介紹: 歷史背景 在 IEEE 754 標準出現之前,不同的計算機系統采用各自的浮點數表示方法&…

centos7部署k8s集群

環境準備 服務器三臺 10.0.0.70master 10.0.0.71worker1 10.0.0.72worker2 配置yum源(集群機器執行) wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo 安裝常用軟件 yum -y install lrzsz vim net-tools關閉f…

第三方軟件檢測報告:熱門辦公軟件評估及功能表現如何?

第三方軟件檢測報告是重要文件。它用于對軟件做專業評估。能反映軟件各項性能。能反映軟件安全性等指標。該報告為軟件使用者提供客觀參考。該報告為軟件開發者提供客觀參考。有助于發現問題。還能推動軟件改進。 檢測概述 本次檢測針對一款熱門辦公軟件。采用了多種先進技術…

Linux:41線程控制lesson29

1.線程的優點: ? 創建?個新線程的代價要?創建?個新進程?得多 創建好線程只要調度就好了 ? 與進程之間的切換相?,線程之間的切換需要操作系統做的?作要少很多 為什么? ? 最主要的區別是線程的切換虛擬內存空間依然是相同的&#x…

【MCP】從一個天氣查詢服務帶你了解MCP

1. 前言 這篇文章將通過一個集成高德天氣查詢的 MCP Server 用例,帶你上手開發自己的 MCP Server ,文章將通過以下三種方式(自己編寫 Client 端代碼,使用 mcp-cli 自帶頁面,集成到 Claude 桌面版等)帶你測試自己的 MC…

SHCTF-REVERSE

前言 之前寫的,一直沒發,留個記錄吧,萬一哪天記錄掉了起碼在csdn有個念想 1.ezapk 反編譯 快速定位關鍵函數 package com.mycheck.ezjv;import adrt.ADRTLogCatReader; import android.app.Activity; import android.content.Context; impo…

安卓觸摸事件分發機制分析

1. 前言 🎯 一句話總結: 觸摸事件(TouchEvent)會從 Activity 層開始,按從外到內的方式傳遞給每一個 ViewGroup/View,直到某個 View 消費(consume) 它,事件傳遞就會停止…

Spring MVC 多個攔截器的執行順序

一、流程總覽 該流程圖描述了一個多層攔截器鏈的業務處理流程,核心邏輯為: 前置攔截:通過 predHandler1 和 predHandler2 逐層校驗請求合法性。核心處理:通過校驗后執行核心業務邏輯 handler()。后置處理與清理:按反…

django filter 排除字段

在Django中,當你使用filter查詢集(QuerySet)時,通常你會根據模型的字段來過濾數據。但是,有時你可能想要排除某些特定的字段,而不是過濾這些字段。這里有幾種方法可以實現這一點: 使用exclude方…

ByeCode,AI無代碼開發平臺,拖拽式操作構建應用

ByeCode是什么 ByeCode 是一款先進的 AI 無代碼平臺,旨在幫助企業迅速創建數字名片、網站、小程序、應用程序及內部管理系統,無需繁雜的編碼或開發工作。ByeCode 采用直觀的可視化界面和拖拽式操作,使得非技術用戶能夠輕松上手。同時&#x…

AI日報 - 2025年04月28日

🌟 今日概覽(60秒速覽) ▎🤖 能力進展 | Gemini 2.5 Pro成功挑戰《口袋妖怪紅》8道館;AI推理器具備自我糾錯能力;LLM在游戲、多模態理解、代碼遷移等方面展現新能力。 ▎💼 商業動向 | Google回應DOJ反壟斷案&#xff…