diff --git a/README.md b/README.md index 69d0ce2583bbd145474c64125cb00c961250953d..d5a560eccb76a87096750d93b7745f9b3284491c 100644 --- a/README.md +++ b/README.md @@ -1,37 +1,6 @@ # code-note -#### 介绍 -日常开发笔记。 +## 介绍 -#### 软件架构 -软件架构说明 - - -#### 安装教程 - -1. xxxx -2. xxxx -3. xxxx - -#### 使用说明 - -1. xxxx -2. xxxx -3. xxxx - -#### 参与贡献 - -1. Fork 本仓库 -2. 新建 Feat_xxx 分支 -3. 提交代码 -4. 新建 Pull Request - - -#### 特技 - -1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md -2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) -3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 -4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 -5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) -6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/) +日常开发笔记 + --xing diff --git a/coding-style/Coding Style.md b/coding-style/Coding Style.md new file mode 100644 index 0000000000000000000000000000000000000000..001de2857969a879c7d35098a805770ff088508c --- /dev/null +++ b/coding-style/Coding Style.md @@ -0,0 +1,118 @@ +# Coding Style + +## 空行 + +- 空行不要太频繁,比如 20 行内不要使用换行。 +- 如果感觉必须要使用空行去区分逻辑的时候,首先看看是不是可以拆分方法,如果不至于进行拆分方法,可以使用换行。 +- 一般一次空一行。 + +## 引号 + +- 优先级:无引号 > 单引号 > 双引号,比如在字符串声明值的时候,三种方式都可以用,这个时候就按照优先级的先后进行使用。 + +## 注释 + +### 什么时候要有注释 + +- 描述性的,比如描述一个文件、类、方法、流程的时候,尤其是项目有特定规范时,一定要写以便生成 API 文档。 +- 代码逻辑复杂导致的可读性低的地方。 +- 代码作用不直观时,添加注释解释这样用的原因。 +- 存在多个方案时,注释上这样做的原因。 +- 因为某些限制确实无法保持一致的,注明原因。 +- 参考了外部资料,注明链接,方便别人查看。 +- 临时标记:TODO、FIXME、HACK、OPTIMIZE、REVIEW 等。 + +被注释掉的代码,如果没有用就删除,临时注释的标明原因。 + +## 命名 + +首先去术语表中查找,表中有的使用表中的,表中没有的先查看上文中之前使用的。最后再使用 + +- 计数用 count、times,总和用 sum。不要用 time,有歧义。 +- 时间使用 xxxAt 的格式,注意时态。比如:已经发布 publishedAt,将发布 publishAt。 +- 是否使用 isXXX、doesXXX、shouldXXX、canXXX 的格式。注意使用时要符合基本语法。 + +## 日志 + +- 应为固定字符串,中间不要拼接任何变量,变量应该放到 context 里。 +- 正式的非口语化的陈述句,英文注意时态且首字母应大写(代码标识符例外,应保持原样),句号可加可不加,保持一致即可。 + +## 异常 + +- 不要吞掉异常,除非是确切知道这个问题大概率会出现。还有,捕获以后一定要处理。 +- 保留原始错误信息。 +- 若要重试,必须要加次数限制,并做好封装。 + +## 错误反馈 + +- 服务器端 + - 进行使用框架和协议的 code。 + - 避免使用数字 error code,可以使用 string code。 + - message 也要尽量复用,不要带字段名,比如使用“can not be blank”,而不是"xxx can not be blank"。对于代码,哪个字段的问题可从 errors 的 key 得出,对于用户,界面上要把该错误消息跟其 input 对应,也不存在歧义。 +- 前端 + - 比如,输入表单,只需把服务端返回的 errors 直接挂到整个表单上,即可自动根据 key(即字段名)关联对应的 input,并将错误显示到 input 下。 + - RESTful API 的结构,见知识库中图片(已存到本地)。 + +## HTML & CSS + +- HTML 格式 + - 外部链接必须具有 rel="noopener" 和 target="_blank" 属性。 + - a 标签必须有标题属性。 + - 标签的属性内容必须小写,属性值必须用引号括起来。 + - 所有代码使用小写。 + - 属性和属性值之间的等号前后没有空格。 + - 像 checked、disabled 和 required 这样的布尔属性值是多余的,必须省略。 + - 单行注释在注释标记前后必须有空格。比如 \,comment 前后要有空格。 + - 单行注释必须放在标签之前。 + - 图片必须有 alt 属性。 +- CSS 格式 + - 必须避免内联样式,不要把样式内容放在一行,要使用换行。 + - style 样式中的 type="text/css" 属性必须省略。 + - 除非需要,否则不要在 0 后面使用单位。 + - 注意缩进。 + - 在每个声明后使用分号。 + - 在属性名称的冒号后使用空格。 + - 在最后一个选择器和声明块之间使用一个空格。 + - 始终为每个选择器和声明另起一行。 + - 两种规格之间加空行。 + - 对属性选择器和属性值使用单引号,而不是双引号。 + - 不要在 URI 值中使用引号。 + +## JavaScript + +- 类成员排序:静态属性、静态方法、实例属性、构造方法、实例方法,公开方法写在私有方法前面。 +- 类私有成员要加下划线前缀。 +- 避免使用内联样式,要使用换行。 +- 外部 JS 代码的加载必须在 body 标签内。 +- 必须省略 script 标签的 type="text/javascript" 属性。 +- 使用 var 声明变量,不指定 var 时,该变量将被放置在全局上下文中,可能会破坏现有值。此外,如果没有声明,则很难判断变量存在于哪个范围内。 +- 不使用 const 关键字,因为 Internet Explorer 不支持它。 +- 变量使用全部大写,单词之间使用 _ 进行分割。 +- 始终使用分号。 + +## Java + +- 抽象类命名使用 Abstract 或 Base 开头。 +- 异常类命名使用 Exception 结尾。 +- 测试类命名以它要测试的类的名称开始,以 Test 结尾。 +- 类型与中括号紧挨相连来表示数组,比如 int[]。 +- POJO 类中的任何布尔类型的变量,都不要加 is 前缀,否则部分框架解析会引起序列化错误。 +- 在 long 或者 Long 赋值时,数值后使用大写字母 L,不能是小写字母 l,小写容易跟数字混淆,造成误解。 +- 大括号 + - 大括号内为空,写成 {},大括号中间无需换行和空格。 + - 如果是非空代码块则: + - 左大括号前不换行。 + - 左大括号后换行。 + - 右大括号前换行。 + - 右大括号后还有 else 等代码则不换行。 + - 表示终止的右大括号后必须换行。 +- if/for/while/switch/do 等保留字与括号之间都必须加空格。 +- 类型强制转换时,右括号与强制转换值之间不需要任何空格隔开。 +- 单行字符数限制不超过 120 个,超出需要换行,换行时遵循如下原则: + - 第二行相对第一行缩进 4 个空格,从第三行开始,不再继续缩进。 + - 运算符与下文一起换行。 + - 方法调用的点符号与下文一起换行。 + - 方法调用中的多个参数需要换行时,在逗号后进行。 +- 所有的覆写方法,必须加 @Override 注解。 +- 不能使用过时的类或方法。 +- BigDecimal 的等值比较应使用 compareTo() 方法,而不是 equals() 方法。 diff --git a/css/CSS.md b/css/CSS.md new file mode 100644 index 0000000000000000000000000000000000000000..270872449d36d2055fba580d97de8729c204a864 --- /dev/null +++ b/css/CSS.md @@ -0,0 +1,490 @@ +# CSS 笔记 + +## 参考文档 + +- [CSS W3C](https://www.w3school.com.cn/css/index.asp) +- [CSS Layout](https://zh.learnlayout.com/) +- [calc 函数](https://developer.mozilla.org/zh-CN/docs/Web/CSS/calc()) + +## css 选择器 + +### 简单选择器 + +- id 选择器 + + 格式为 `#id {}`,id 选择器是使用元素的 id 来选定元素。 + + **注意:** id 选择器不能以数字开头。 + +- 类选择器 + + 格式为 `.类名 {}`,还可以 `标签名.类名 {}`,比如:p.center {...},选择具有这个类的这个标签可以生效。就是指的是具有 center 类的 p 标签生效。 + + 选择多个类的话,类之间使用空格隔开。 + + **注意:** 类名不能使用数字开头! + +- 通用选择器 + + 格式为 `* {}`,使用 * 可以选择页面 的所有元素。 + +- 元素选择器 + + 格式为 `标签名 {}`,即元素名,直接使用元素的名字进行选择。 + +- *选择器分组* + + 多个选择器可以进行分组,然后使用“,”进行分隔。 + +### 高级选择器 + +- 多类选择器 + + 格式为 `.类名.类名 {}`,即类名直接连接在一起,之间没有空格,表示筛选同时具有这两个类的元素。 + +- 属性选择器 + + 格式为 `标签名[属性名 1=属性值 1][属性名 2=属性值 2] {}`,标签名可省略,属性名可以是多个,但是多个使用要连接在一起。 + + - [attribute = value] ,用于选取带有指定属性和值的元素。 + - [attribute~ = value] ,用于选取属性值中包含指定词汇的元素。 + - [attribute| = value] ,用于选取带有以指定值开头的属性值的元素,该值必须是整个单词。 + - [attribute^ = value] ,匹配属性值以指定值开头的每个元素。 + - [attribute$ = value] ,匹配属性值以指定值结尾的每个元素。 + - [attribute* = value] ,匹配属性值中包含指定值的每个元素。 + + 示例: + + ```css + *[title] {color:red;} /*-- 这里是包含 title 属性的所有元素都设置为红色字体 --*/ + ``` + + ```css + a[href] {color:red;} /*-- 这里是把有 href 属性的 a 标签设置为红色字体 --*/ + ``` + +- 多类选择器 + + 格式为 `.类名.类名 {}`,即类名直接连接在一起,之间没有空格,表示筛选同时具有这两个类的元素。 + +### 组合器 + +- 后代选择器 (空格),所有后代。 + + 示例: + + ```css + div p { + background-color: yellow; + } + ``` + +- 子选择器 (>),只是子。 + + 示例: + + ```css + div > p { + background-color: yellow; + } + ``` + +- 相邻兄弟选择器 (+) + + 示例: + + ```css + div + p { + background-color: yellow; + } + ``` + +- 通用兄弟选择器 (~),所有兄弟。 + + 示例: + + ```css + div ~ p { + background-color: yellow; + } + ``` + +## 三种使用 CSS 的方法 + +- 外部 CSS + + 使用 `` 标签引用外部的 CSS 文件,例如 ``。 + + 外部样式表的扩展名必须是 .css 的文件,文件中不应该包含任何 HTML 标签,属性值和单位之间不加空格。 + +- 内部 CSS + + 内部 CSS 写在页面声明的 `
` 标签内,样式代码写在 `