代码整洁之道

《代码整洁之道》--第13章 并发

自作多情 提交于 2019-11-30 13:22:18
1. 为什么要并发   a) 并发是一种解耦策略。他帮助我们吧做什么(目的)和何时做(时机)分解开。   b) 在web应用的servlet模式下,当有web请求时,servlet就会异步执行。 2. 挑战   a) 当两个线程相互影响时就会出现不可预期的情况。这是因为线程在执行那行java代码时有许多可能路径可行,有些路径会产生错误的结果。回答这个问题需要理解 Just-IN-Time编译器如何对待生成的字节码,还   要理解java内存模型认为什么东西具有原子性 3. 并发防御原则   a) SRP     i. 并发相关的代码有自己的开发,修改和调优生命周期     ii. 开发相关代码有自己要对付的挑战,和非并发代码不同     iii. 即便没有周边应用程序增加的负担,写的不好的并发代码可能的出错方式数量也足够挑战性     iv. 建议:分离并发代码和其他代码   b) 推论:限制数据作用域     i. 谨记数据封装;严格限制对可能被共享的数据的访问   c) 推论:使用数据复本     i. 从一开始就避免共享数据,从多线程收集所有副本的结果,并在单个线程中合并这些结果   d) 推论:线程应尽可能地独立     i. 尝试将数据分解到可被独立线程(可能在不同处理器上)操作的独立子集 4. 了解java库   a) 线程安全群集     i. Java.util

《代码整洁之道》读书笔记

谁说我不能喝 提交于 2019-11-29 14:33:46
为了获得更好的阅读体验,请访问原文: 传送门 一、前言 代码是什么呢?或者说作为程序员的我们,对于写代码这件事又是抱着怎样的一种态度呢?我时常都在想,如今我如愿成为了一名程序员(虽然还很菜),写代码这件事成了我的工作,我期望从工作中获得些什么?而工作又能给予我什么呢? 我在短暂的工作经历中(4 个月),犯下过不少错,少部分是因为经验,但大部分的情况下都是因为对代码没有足够的敬畏之心导致的,并且在工作中也遇到过一些很有意思的代码,所以今天就着这本《代码整洁之道》,来谈一谈对于代码的感受和一些想法。(Ps:想吐槽一下这本书挺魔怔的..) 二、什么是整洁的代码 我搜索 「代码」 这两个关键字,给出的官方解释都特别有意思,摘一下百度百科的好了: 代码就是程序员用 开发工具 所支持的语言写出来的 源文件 ,是一组由 字符 、符号或信号 码元 以离散形式表示信息的明确的规则体系。代码设计的原则包括唯一确定性、标准化和通用性、可扩充性与稳定性、便于识别与记忆、力求短小与格式统一以及容易修改等。 源代码 是代码的分支,某种意义上来说,源代码相当于代码。现代 程序语言 中,源代码可以书籍或磁带形式出现,但最为常用格式是文本文件,这种典型格式的目的是为了编译出 计算机程序 。计算机源代码最终目的是将人类可读文本翻译成为计算机可执行的 二进制 指令 ,这种过程叫 编译 ,它由通过 编译器 完成。 好了

程序员必读的30本书籍

血红的双手。 提交于 2019-11-28 16:53:59
1. 《代码大全》(第二版) 作者: [美]史蒂夫·迈克康奈尔 第2版的《代码大全》是著名IT畅销书作者史蒂夫·迈克康奈尔11年前的经典著作的全新演绎:第2版不是第一版的简单修订增补,而是完全进行了重写;增加了很多与时俱进的内容。这也是一本完整的软件构建手册,涵盖了软件构建过程中的所有细节。它从软件质量和编程思想等方面论述了软件构建的各个问题,并详细论述了紧跟潮流的新技术、高屋建瓴的观点、通用的概念,还含有丰富而典型的程序示例。这本书中所论述的技术不仅填补了初级与高级编程技术之间的空白,而且也为程序员们提供了一个有关编程技巧的信息来源。这本书对经验丰富的程序员、技术带头人、自学的程序员及几乎不懂太多编程技巧的学生们都是大有裨益的。可以说,无论是什么背景的读者,阅读这本书都有助于在更短的时间内、更容易地写出更好的程序。 2. 《程序员修炼之道》 作者: Andrew Hunt /David Thomas 《程序员修炼之道》由一系列的独立的部分组成,涵盖的主题从个人责任、职业发展,直到用于使代码保持灵活、并且易于改编和复用的各种架构技术。利用许多富有娱乐性的奇闻轶事、有思想性的例子以及有趣的类比,全面阐释了软件开发的许多不同方面的最佳实践和重大陷阱。无论你是初学者,是有经验的程序员,还是软件项目经理,本书都适合你阅读。 3. 《计算机程序的构造和解释》 作者: Harold

《代码整洁之道》整理

核能气质少年 提交于 2019-11-27 19:04:20
1、命名篇 避免使用误导性的命名,比如是 List 类型变量才会命名为 accountList ;不使用小写的字母L和大写的字母O来命名变量,因为他们会和数字1和0混淆 变量的命名使用有区分意义的词。比如, ProductInfo 和 ProductData 就没区分; Info 和 Data 就像 the 、 a 、 an 一样是混淆的废话;变量名不出现 Variable ,表名不出现 Table 类名不出现 Manager 、 Processor 、 Data 、 Info 这类类名;类名必须是名词 使用工厂来新建对象比 new 对象要好,可以将构造函数 private 化,比如 Complex.fromRealNameNumber(23.0) 比 new Complex(23.0) 要好 每个概念只使用一个词。比如, fetch 、 retrive 和 get 表示一个意思,尽量别同时出现多个 2、函数篇 函数应该短小,20行封顶最佳 函数应该只做一件事情,如果一个函数可以继续拆分,则说明该函数不止做了一件事 switch 语句如果太长,可以考虑使用 多态 来替代 函数名不要怕长,最好使用描述性的名称,能表达出函数的意义就好 函数参数: 函数的参数越少越好,最好别超过三个,三个或三个以上可以封装成一个对象 对于传入单个参数的函数,一种普遍的作用是使用该参数做别的事