日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > php >内容正文

php

阿里php开发规范,阿里巴巴java开发手册学习记录,php版

發(fā)布時間:2023/12/14 php 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 阿里php开发规范,阿里巴巴java开发手册学习记录,php版 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一.編程規(guī)約

(一)命名風(fēng)格

1.目錄使用小寫+下劃線 home,view,model,admin_view

2.

類 UpperCamelCase PhpMailer

方法 lowerCamelCase getUserName

屬性 lowerCamelCase tableName

函數(shù) 小寫字母和下劃線 get_client_ip

常量 全部大寫 PASSWORD

如果模塊、接口、類、方法使用了設(shè)計模式,在命名時需體現(xiàn)出具體模式。將設(shè)計模式體現(xiàn)在名字中,有利于閱讀者快速理解架構(gòu)設(shè)計理念。

(二)代碼格式

1.

// 這是示例注釋,請注意在雙斜線之后有一個空格

2.

if else的語言結(jié)構(gòu) 只在結(jié)束的地方換行

e.g.

if (flag == 1) {

System.out.println("world");

} else {

System.out.println("ok");

}

3.一行代碼不超過120字符,超過需要使用換行

單個方法的總行數(shù)不超過 80 行。

4.代碼邏輯分清紅花和綠葉,個性和共性,綠葉邏輯單獨出來成為額外方法,使主干代碼 更加清晰;共性邏輯抽取成為共性方法,便于復(fù)用和維護。

(三)OOP規(guī)約

1.所有的覆寫方法,必須加@Override注解

2.任何類、方法、參數(shù)、變量,嚴控訪問范圍。過于寬泛的訪問范圍,不利于模塊解耦。

如果是一個 private 的方法,想刪除就刪除,可是一個 public 的 service

成員方法或成員變量,刪除一下,不得手心冒點汗嗎

3.避免出現(xiàn)重復(fù)的代碼(Don’t Repeat Yourself),即DRY原則

二.安全規(guī)約

1.用戶輸入的 SQL 參數(shù)嚴格使用參數(shù)綁定或者 METADATA 字段值限定,防止 SQL 注入,

禁止直接使用前端傳來的字符串拼接 SQL 訪問數(shù)據(jù)庫。

三.MySQL規(guī)約

(一) 建表規(guī)約

1.任何字段如果為非負數(shù),必須是 unsigned

2.表達是與否概念的字段,必須使用 is_xxx 的方式命名,數(shù)據(jù)類型是 unsigned tinyint ( 1表示是,0表示否)

3.表名不使用復(fù)數(shù)名詞,表名應(yīng)該僅僅表示表里面的實體內(nèi)容,不應(yīng)該表示實體數(shù)量

4.唯一索引名為 uk_字段名,普通索引名則為 idx_字段名。

5.小數(shù)類型為 decimal,禁止使用 float 和 double。

//說明:float 和 double 在存儲的時候,存在精度損失的問題,很可能在值的比較時,得到不 正確的結(jié)果。如果存儲的數(shù)據(jù)范圍超過 decimal 的范圍,建議將數(shù)據(jù)拆成整數(shù)和小數(shù)分開存儲

6.varchar 是可變長字符串,不預(yù)先分配存儲空間,長度不要超過 5000,如果存儲長度大于此值,定義字段類型為 text,獨立出來一張表,用主鍵來對應(yīng),避免影響其它字段索引效率。

7.禁用保留字,如 desc、range、match、delayed desc//這個很容易誤用,以后換成descb

8.表必備三字段:id, gmt_create, gmt_modified。 說明:其中id必為主鍵,類型為bigint unsigned、單表時自增、步長為1。gmt_create, gmt_modified 的類型均為 datetime 類型,前者現(xiàn)在時表示主動創(chuàng)建,后者過去分詞表示被 動更新。//here

9.【推薦】單表行數(shù)超過 500 萬行或者單表容量超過 2GB,才推薦進行分庫分表。

(二) 索引規(guī)約

1.業(yè)務(wù)上具有唯一特性的字段,即使是組合字段,也必須建成唯一索引。 說明:不要以為唯一索引影響了 insert 速度,這個速度損耗可以忽略,但提高查找速度是明 顯的;另外,即使在應(yīng)用層做了非常完善的校驗和控制,只要沒有唯一索引,根據(jù)墨菲定律, 必然有臟數(shù)據(jù)產(chǎn)生。

2.超過三個表禁止 join。需要 join 的字段,數(shù)據(jù)類型保持絕對一致;多表關(guān)聯(lián)查詢時,保證被關(guān)聯(lián)的字段需要有索引。

3.利用覆蓋索引來進行查詢操作,來避免回表操作。

說明:如果一本書需要知道第 11 章是什么標(biāo)題,會翻開第 11 章對應(yīng)的那一頁嗎?

目錄瀏覽一下就好,這個目錄就是起到覆蓋索引的作用。

//這個例子舉的非常非常的好,以后用書和目錄來理解索引和數(shù)據(jù)是個非常好的方式

//extra列會出現(xiàn):using index

4.延遲關(guān)聯(lián)或者子查詢優(yōu)化超多分頁場景。

說明:MySQL 并不是跳過 offset 行,而是取 offset+N 行,然后返回放棄前 offset 行,返回 N 行,那當(dāng) offset 特別大的時候,效率就非常的低下,要么控制返回的總頁數(shù),要么縮減對要放棄的offset行的獲取成本。

正例:先快速定位需要獲取的 id 段,然后再關(guān)聯(lián):

SELECT a.* FROM 表 1 a, (select id from 表 1 where 條件 LIMIT 100000,20 ) b where a.id=b.id

5.在 varchar 字段上建立索引時,必須指定索引長度,沒必要對全字段建立索引,根據(jù)實際文本區(qū)分度決定索引長度即可。

6.SQL 性能優(yōu)化的目標(biāo):至少要達到 range 級別,要求是 ref 級別,如果可以是 consts 最好。

說明:

1)consts 單表中最多只有一個匹配行(主鍵或者唯一索引),在優(yōu)化階段即可讀取到數(shù)據(jù)。

2)ref 指的是使用普通的索引(normal index)。

3)range 對索引進行范圍檢索。

7.防止因字段類型不同造成的隱式轉(zhuǎn)換,導(dǎo)致索引失效。

select id from qs_video_update where bid = 73836918995;

select id from qs_video_update where bid = '73836918995';//explain一下天壤之別了

(三)sql語句

1.count(*)就是 SQL92 定義 的標(biāo)準(zhǔn)統(tǒng)計行數(shù)的語法,跟數(shù)據(jù)庫無關(guān),跟 NULL 和非 NULL 無關(guān)。

說明:count(*)會統(tǒng)計值為 NULL 的行,而 count(列名)不會統(tǒng)計此列為 NULL 值的行。

總結(jié)

以上是生活随笔為你收集整理的阿里php开发规范,阿里巴巴java开发手册学习记录,php版的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。