stl是c++非常重要的一部分,它是很多大神的傑作,高效,穩定,可擴充套件性好,雖然stl確實存在難以除錯,記憶體碎片的問題(現在機器的記憶體越來越大,記憶體碎片的問題基本不太可能成為系統瓶頸,但只要你使用恰當,它能顯著提高生產力,並使**更短,更易維護。
而在工程中,如果不養成好的使用習慣,也容易造成一些問題!
1.vector, map, set, list, queue, dequeue, stack 等容器存放的物件必須是可拷貝的,尤其注意深拷貝的情況,必須自己過載拷貝建構函式和=號, 最後物件僅僅只有資料成員,且資料成員沒有指標。
2.vector, map, set, list, queue, dequeue, stack 等容器存放的物件最好不要是指標,因為多執行緒環境,對指標操作非常危險,也容易造成記憶體洩漏的問題,即使存放指標,最好使用智慧型指標。
3.定義容器物件,最好在棧空間定義。
4.盡量不定義全域性的容器物件,即使要使用全域性的容器,最好使用全域性指標,並在某函式內new乙個。
5.在棧空間最好定義容器物件,而不是使用容器指標,容器物件可以自動析構。
6.map的key最好是整形或者是string, 最好不要是指標型別;能不自己過載函式物件或者小於號的,就不要去過載,使用預設的。
7.set最好存單一資料型別,整形或者string, 如果是複雜資料,可以使用map替代會更加清晰。
8.判斷乙個容器是否為空,適應empty() 而不是 size() == 0。
9.vector在預知大致範圍時候盡量先reserve, 這樣可以在很多時候大大提高程式效率。
10.能用string的盡量不用char陣列,除非一些特定需要和效能要求極高的情況。
11.能用stl的sort, partial_sort, 等標準演算法的,盡量用stl演算法。
12.多執行緒操作容器時盡量使用容器指標,而不是容器物件,對容器操作對指標加鎖。
13.最好使用容器引用作為函式引數,減少拷貝。
14.盡量使用標準stl容器,除非特殊情況使用hash_map等擴充套件容器。
15.在過載函式物件operator()和《號時,最好內聯。
Valid 註解 在專案中的使用經驗
註解 valid 的主要作用是用於資料效驗,可以在定義的實體中的屬性上,新增不同的註解來完成不同的校驗規則,而在介面類中的接收資料引數中新增 valid 註解,這時實體將會開啟乙個校驗的功能。前段時間專案開發的時候,前端傳遞的引數過多且都要校驗,於是出現了 public string adduser...
在專案中引入領域驅動設計的經驗
chris patuzzo近期在一次演講中介紹了領域驅動設計 ddd 的原則,並結合乙個基於ruby on rails的真實專案進行講解。在這次專案之前,chris所在的團隊為重新設計公司的主營 所做的兩個概念驗證都因為可伸縮性方面的問題而失敗了。因此,業務主管部門決定在這一次嘗試中採取一種更為敏捷...
在專案中引入領域驅動設計的經驗
chris patuzzo近期在一次演講中介紹了領域驅動設計 ddd 的原則,並結合乙個基於ruby on rails的真實專案進行講解。在這次專案之前,chris所在的團隊為重新設計公司的主營 所做的兩個概念驗證都因為可伸縮性方面的問題而失敗了。因此,業務主管部門決定在這一次嘗試中採取一種更為敏捷...