1.编码中常见的三种注释坏习惯
- 无注释
- 无用的注释
- 过多的注释
2.使用角度
注释不能太多,也不能太少,主要添加在类和函数上。好的命名可以替代明确或简单的类和函数。
3.本质
注释 = 做什么,为什么,怎么做,怎么用,对一些边界条件,特殊情况进行说明,以及对函数输入,输出,异常进行说明。
4.提升方式
写好注释很关键,可以通过查看网上优秀案例代码的方式去练习,或者参考大佬们的代码,比如jdk源码等
5.关于注释使用英文还是中文
- 有人说建议使用英文注释,与国际接轨。
- 个人想说,去球吧,大家都是中国人,代码是提供给团队同伴看的,一定要使用中文,不然你等着大家心里骂你:炫技呀、就你能、都看不懂。
6.一个代码的注释示例
[仅作示例,不作为可执行程序]
/**
* 解析某个路径下的XML来构建应用上下文
*
* @author zhangsan
* @version 2023/09/19 14:59:33
* @since 1.0.0
*/
public class ClassPathXmlApplicationContext {
private List<BeanDefinition> beanDefinitionList = new ArrayList<>();
private Map<String, Object> singletonMap = new HashMap<>();
/**
* 构造器获取外部配置,解析出Bean的定义,形成内存映像
* @param fileName
*/
public ClassPathXmlApplicationContext(String fileName) {
this.readXml(fileName);
this.instanceBeans();
}
/**
* 解析XML配置文件,将配置文件中每一个<bean>的定义存放到beanDefinitionList
* @param fileName
*/
private void readXml(String fileName) {
// 1.通过文件名,解析XML配置文件
SAXReader saxReader = new SAXReader();
URL xmlPath = this.getClass().getClassLoader().getResource(fileName);
Document document = saxReader.read(xmlPath);
Element rootElement = document.getRootElement();
// 2.对配置文件中的每一个<bean>,进行处理
for (Element element : (List<Element>) rootElement.elements()) {
// 获取Bean的基本信息
String beanID = element.attributeValue("id");
String beanClassName = element.attributeValue("class");
BeanDefinition beanDefinition = new BeanDefinition(beanID, beanClassName);
// 3.将Bean的定义存放到beanDefinitionList
beanDefinitionList.add(beanDefinition);
}
}
/**
* 利用反射创建Bean实例,并存储在singletonMap中
*/
private void instanceBeans() {
for (BeanDefinition beanDefinition : beanDefinitionList) {
singletonMap.put(beanDefinition.getId(), Class.forName(beanDefinition.getClassName()).newInstance());
}
}
/**
* 这是对外的一个方法,让外部程序通过BeanName从容器中获取Bean实例
*/
public Object getBean(String beanName) {
return singletonMap.get(beanName);
}
}