当前位置: 首页>編程日記>正文

【阿里开发规范】Java开发手册(嵩山版)

【阿里开发规范】Java开发手册(嵩山版)

Java开发手册(嵩山版)

  • 所有的POJO类属性必须使用包装数据类型
  • 构造方法里面禁止加入任何业务逻辑,如果有初始化逻辑,请放到init方法中
  • 类成员与方法访问控制从严:
    (1)类成员方法只对继承类公开,那么限制为protected
    (2)若是static成员变量,考虑是否为final
    说明:任何类,方法,参数,变量,严格控制访问范围。过于宽泛的访问范围,不利于模块解耦。 思考:如果是一个private的方法,想删除就删除,可是一个public的service成员方法或者成员变量,删除一下,不得手心冒点汗吗?变量像自己的孩子,尽量在自己的视线内,变量作用域太大,无限制 的到处跑,那么你会担心的。
  • 单个方法的长度不超过90行
  • 类内方法定义的顺序依次是:公有方法或者保护方法 > 私有方法 > getter/setter方法
  • 日期格式化时,传入pattern中表示年份统一使用小写的y。yyyy表示当天所在的年,YYYY代表week in which year(JDK1.7之后),当天的周属于的年份,周日开始到周六结束,只要本周跨年,YYYY返回的年份就是下一年
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  • 不要在程序中写死一年为365天 获取今年的天数
//获取今年的天数
int daysOfThisYear = LocalDate.now().lengthOfYear();
//获取指定某年的天数
LocalDate.of(2011,1,1).lengthOfYear();
  • 使用enum指定月份 Calendar.JANUARY,Calendar.FEBRUARY …
  • 判断所有集合内部的元素是否为空,使用isEmpty()方法,而不是size() == 0 的方法
//说明:在某些集合中,前者的时间复杂度为O(1),而且可读性更好
Map<String,Object> map = new HashMap<>(16);if (map.isEmpty()){System.out.println("no element in this map.");}
  • 在使用java.util.stream.Collectors类的toMap()方法转为Map集合是,一定要使用
    注意:(1)含有参数类型为BinaryOpeartor,参数名为mergeFunction的方法,否则当出现相同的key值时会抛出ILLegalStateException异常
    (2)value为null时会抛NPE异常
ArrayList<Pair<String,Double>> pairArrayList = new ArrayList<>(3);
pairArrayList.add(new Pair<>("version",12.10));
pairArrayList.add(new Pair<>("version",12.19));
pairArrayList.add(new Pair<>("version",6.96));
Map<String,Double> map1= pairArrayList.stream().collect(Collectors.toMap(Pair::getType, Pair::getValue, (v1, v2) -> v2));
  • 集合转数组,必须使用集合中toArray(T[] array),传入的是类型完全一致,长度为0的空数组
//长度等于0,动态创建与size相同的数组,性能最好
List<String> list = new ArrayList<>(2);list.add("guan");list.add("bao");String [] array = list.toArray(new String[0]);
  • 集合的转化、Iterator循环不要进行remove/add操作
  • 使用entrySet遍历map类集合KV,而不是keySet方式进行遍历。
map.entrySet();  //效率高,只是遍历了一次就把key和value都放到entry中
map.keySet();    //遍历了两次,一次转为Iterator,一次取key对应的value
map.forEach();   //JDK1.8使用这种方式
  • map之间差异
new Hashtable<>();  //key: not null  value:not null   线程安全
new ConcurrentHashMap<>();  //key: not null  value:not null   锁分段技术(JDK8:CAS)
new TreeMap<>();  //key: not null  value:allow null   线程不安全
new HashMap<>();  //key: allow null  value:allow null   线程不安全
  • 创建线程或者线程池是指定有意义的线程名称,方便出错时回溯
public class UserThreadFactory  implements ThreadFactory {private final String namePrefix;private final AtomicInteger nextId = new AtomicInteger(1);public UserThreadFactory(String whatFeatureOfGroup) {this.namePrefix = "From UserThreadFactory's"+whatFeatureOfGroup+"-Worker-";}@Overridepublic Thread newThread(Runnable task) {String name = namePrefix + nextId.getAndDecrement();Thread thread = new Thread(null,task,name,2);System.out.println(thread.getName());return thread;}
  • SimpleDateFormat是线程不安全的类,一般不要定义为static变量,如果定义为static, 必须加锁,或者使用DateUtils工具类
private static final ThreadLocal<DateFormat> df = new ThreadLocal<DateFormat>(){@Overrideprotected DateFormat initialValue() {return new SimpleDateFormat("yyyy-MM-dd");}};


https://www.fengoutiyan.com/post/15742.html

相关文章:

  • 阿里开发规范手册
  • 阿里云编码规范
  • 阿里代码规范pdf
  • 阿里巴巴java技术图谱
  • 德勒 阿里
  • 阿里技术规范
  • 阿里java编码规范
  • 阿里巴巴java开发手册pdf
  • 鏡像模式如何設置在哪,圖片鏡像操作
  • 什么軟件可以把圖片鏡像翻轉,C#圖片處理 解決左右鏡像相反(旋轉圖片)
  • 手機照片鏡像翻轉,C#圖像鏡像
  • 視頻鏡像翻轉軟件,python圖片鏡像翻轉_python中鏡像實現方法
  • 什么軟件可以把圖片鏡像翻轉,利用PS實現圖片的鏡像處理
  • 照片鏡像翻轉app,java實現圖片鏡像翻轉
  • 什么軟件可以把圖片鏡像翻轉,python圖片鏡像翻轉_python圖像處理之鏡像實現方法
  • matlab下載,matlab如何鏡像處理圖片,matlab實現圖像鏡像
  • 圖片鏡像翻轉,MATLAB:鏡像圖片
  • 鏡像翻轉圖片的軟件,圖像處理:實現圖片鏡像(基于python)
  • canvas可畫,JavaScript - canvas - 鏡像圖片
  • 圖片鏡像翻轉,UGUI優化:使用鏡像圖片
  • Codeforces,CodeForces 1253C
  • MySQL下載安裝,Mysql ERROR: 1253 解決方法
  • 勝利大逃亡英雄逃亡方案,HDU - 1253 勝利大逃亡 BFS
  • 大一c語言期末考試試題及答案匯總,電大計算機C語言1253,1253《C語言程序設計》電大期末精彩試題及其問題詳解
  • lu求解線性方程組,P1253 [yLOI2018] 扶蘇的問題 (線段樹)
  • c語言程序設計基礎題庫,1253號C語言程序設計試題,2016年1月試卷號1253C語言程序設計A.pdf
  • 信奧賽一本通官網,【信奧賽一本通】1253:抓住那頭牛(詳細代碼)
  • c語言程序設計1253,1253c語言程序設計a(2010年1月)
  • 勝利大逃亡英雄逃亡方案,BFS——1253 勝利大逃亡
  • 直流電壓測量模塊,IM1253B交直流電能計量模塊(艾銳達光電)
  • c語言程序設計第三版課后答案,【渝粵題庫】國家開放大學2021春1253C語言程序設計答案
  • 18轉換為二進制,1253. 將數字轉換為16進制
  • light-emitting diode,LightOJ-1253 Misere Nim
  • masterroyale魔改版,1253 Dungeon Master
  • codeformer官網中文版,codeforces.1253 B
  • c語言程序設計考研真題及答案,2020C語言程序設計1253,1253計算機科學與技術專業C語言程序設計A科目2020年09月國家開 放大學(中央廣播電視大學)
  • c語言程序設計基礎題庫,1253本科2016c語言程序設計試題,1253電大《C語言程序設計A》試題和答案200901
  • 肇事逃逸車輛無法聯系到車主怎么辦,1253尋找肇事司機