有书共读《阿里巴巴Java开发手册》读书笔记

今天来写一个读书笔记,读的书的名字叫《阿里巴巴Java开发手册》。

说实话写这个读书笔记我是很抗拒的,因为我根本没收到这个书,找了快递根本不接电话,当时也比较忙,一本薄薄的小册子就不理它了。但这个活动需要大家共同写笔记,所以还是要写的。遂拿了电子版,读了一下,感觉和《代码大全》这类的书差不多。

本书主要有以下章节,从不同的角度去给编程者绑上锁链,防止出现不同风格,最终导致错误的产生。

一、编程规约

这部分比较重要的是命名这个部分,虽然命名大家都会,但要统一且严谨命名还是非常难得的。《代码大全》就用了一定的篇幅来探讨命名,编程时候最难的一件事就是给变量起名。名字既要起的有意义,又要避免冗长。比如 data 就不是一个好的变量名,data 可以代表任何的数据,因为它本身就是数据。当过去一段时间之后,很难想起这个 data 的具体意义了。如果说 data 就够烂了,那么还有更加烂的,data2。当你需要为自己的变量后面加上阿拉伯数字区分的时候,就应该重新思考变量的意义并重新起名了。

《阿里巴巴Java开发手册》中关注了许多具体细节,主要目的就是为了让变量尽量无歧义,有意义。如果大家都使用同一种风格编程,那么合作开发将会是一件比较容易的事,但如果大家的风格迥异,一个文件中的代码出现了多种风格,那么这个代码的可维护性是相当之低下了。这章中没有说为什么要这样或者那样的定义命名风格,避免陷入到底花括号换行好还是不换行好的无意义之争斗。这些完全主观的看法不应该成为考核代码的标准,统一制定标准往往更加高效。

另外注释也是非常重要的,注释切忌啰嗦,最好的状态就是用最简短的语言描述代码的作用。

二、异常日志

异常,遇到异常的时候我们怎么处理,是将异常吞掉还是将异常抛出。如何写异常日志,日志保存多少天比较合适,避免重复打印日志浪费磁盘空间等等。日志是异常发生时解决异常、复现错误的重要工具。实现高效的日志系统难上加难,大家可以参考陈硕写的《Linux多线程服务端编程》,里面介绍了高效的多线程日志库的实现。

三、单元测试

单元测试非常重要,我们很多人在平时自己写玩具的时候或者做实验室项目的时候不怎么做单元测试。考虑这样一个场景,多人合作,别人写完的代码要集成到系统中,而这时我们需要调用该人写的功能。如果他没有做测试,我们能否相信他。

1)            好的单元测试必须遵守AIR(Automatic、Independent、Repeatable)原则。

2)            单元测试应该是全自动执行的。

3)            保持测试单元的独立性。

4)            单元测试是可以重复执行的,不能受到外界环境的影响。

5)            对于单元测试,要保证测试粒度足够小,有助于精确定位问题。

6)            核心业务、核心应用、核心模块的增量代码确保单元测试通过。

7)            单元测试代码要有独立的路径,不允许写在业务代码目录下。

8)            对于数据库的连接测试,设置回滚机制,不要造成垃圾数据。

四、安全规约

这部分就比较贴近生产环境了,到底什么信息该展示以及不展示,怎么简单的做到不被SQL注入,这部分会给你答案。

1)            隶属于用户个人的页面或者功能必须进行权限控制校验。

2)            用户敏感数据禁止直接展示,必须进行脱敏。

3)            用户输入的SQL参数严格使用参数绑定或者METADATA字段值限定,防止SQL注入,禁止字符串拼接访问数据库

4)            用户请求传入的任何参数必须做有效性验证。

5)            禁止向HTML页面输出未经安全过滤或未正确转义的用户数据。

6)            表单、AJAX提交必须执行CSRF安全过滤。

7)            在使用平台资源时,如 短信、邮件、电话、下单、支付,必须实现正确的防重发限制。

这本书或许不能称之为书,如其名是手册,或者是说明书。基本上都不说为什么这么做,只说就这么做,这方面感觉差点。但如果加上了许多文字来说明为什么,就不是一个干货满满的书了。所以这本书非常适合参考,当我们代码越写越难看,或者看不懂别人的代码时,不妨一起看看,建立统一的风格。


#春招##实习##面经##C++工程师##Java#
全部评论
哇塞,18年的飞神你好
点赞 回复
分享
发布于 2023-01-04 17:58 广东

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务