分析一套源代码的代码规范和风格并讨论如何改进优化代码

我在这里分享一个spring的源码,

 BeanFactory定义了 IOC 容器的最基本形式,并提供了 IOC 容器应遵守的的最基本的接口,也就是Spring IOC 所遵守的最底层和最基本的编程规范。在  Spring 代码中, BeanFactory 只是个接口,并不是 IOC容器的具体实现,但是 Spring 容器给出了很多种实现,如 DefaultListableBeanFactory 、 XmlBeanFactory 、ApplicationContext 等,都是附加了某种功能的实现。

 

这个源码中 字符串常量使用大写命名,接口采用驼峰命名法,且接口名称直观的表达了该接口的作用和功能,接口内的函数命名也满足这个条件,函数名应该直接的体现函数要实现的功能,

作为一个开源项目的源码,命名一定要能准确和直观的反应变量的含义或者函数各个接口的功能,我们自己在写代码的时候也要尽量避免,abcd这种字面意义模糊的命名,这会大大加重读代码人的工作量,对于自己后续的改进也不利。万一忘记了含义,自己检查和debug的时候也会非常麻烦,所以最好采用很清晰无歧义的命名,可以大大提高我们开发的效率。

public interface BeanFactory {


//这里是对FactoryBean的转义定义,因为如果使用bean的名字检索FactoryBean得到的对象是工厂生成的对象,  

  //如果需要得到工厂本身,需要转义    

    //转义符“&”用来获取FactoryBean本身

String FACTORY_BEAN_PREFIX = "&";

//根据bean的名字进行获取bean的实例,这是IOC最大的抽象方法

Object getBean(String name) throws BeansException;

//根据bean的名字和Class类型进行获取Bean的实例,和上面方法不同的是,bean名字和Bean 的class类型不同时候会爆出异常

T getBean(String name, Class requiredType) throws BeansException;

T getBean(Class requiredType) throws BeansException;

Object getBean(String name, Object... args) throws BeansException;

//检测这个IOC容器中是否含有这个Bean

boolean containsBean(String name);

//判断这个Bean是不是单利

boolean isSingleton(String name) throws NoSuchBeanDefinitionException;

//判断这个Bean是不是原型

boolean isPrototype(String name) throws NoSuchBeanDefinitionException;

//查询指定的bean的名字和Class类型是不是指定的Class类型

boolean isTypeMatch(String name, Class targetType) throws NoSuchBeanDefinitionException;

//这里对得到bean实例的Class类型

Class getType(String name) throws NoSuchBeanDefinitionException;

//这里得到bean的别名,如果根据别名检索,那么其原名也会被检索出来 

String[] getAliases(String name);

}
 

你可能感兴趣的:(分析一套源代码的代码规范和风格并讨论如何改进优化代码)