web开发代码实例分析
创始人
2024-12-25 22:44:21
0次

通常有经验的程序员写出来的代码一开始可读性都是不错的,但随着需求变更,维护人员变化,慢慢架构开始腐化,代码开始变的混乱起来。

还有就是有时仅仅为了完成功能,而完全忽略了代码的可读性(非功能性需求)。

编程时如何保持对代码可读性的持续关注呢,举个小小的例子吧。

有一个简单的需求,写一个方法生成一个字符串key值,传入全类名、调用方法名返回key值,key的长度受外部条件约束不能超过50个字符。

首先看下面这个实现:

	private String generateKey(String service, String method) {
		String head = "DBO$";
		String key = "";
		
		int len = head.length() + service.length() + method.length();
		if (len <= 50) {
			key = head + service + "." + method;
		} else {
			service = service.substring(service.lastIndexOf(".") + 1);
			len = head.length() + service.length() + method.length();
			key = head + service + "." + method;
			if (len > 50) {
				key = head + method;
				if (key.length() > 50) {
					key = key.substring(0, 48) + ".*";
				}
			}
		}
		
		return key;
	}

方法实现不复杂,很短,看起来也不错。

分析下逻辑:

1、首先 key由固定的头(head)+ service(全类名)+ method(方法)组成,若小于50字符,直接返回

2、若超过50字符限制,则去掉包名,保留类名,再判断一次,若此时小于50字符则返回。

3、若还是超过50字符限制(可能有个变态的家伙起了个很长的类名或方法名),则连类名一起去掉,保留头和方法再判断一次若小于50字符则返回

4、最后如果有个变态长的方法(46+个字符),没办法,只好暴力截断到50字符返回。

这个实现最大限度的在生成key中保留全部的有用信息,对超过限制的情况依次按信息重要程度的不同进行丢弃。

这里只有一个问题,这个业务规则只有4个判断,实现进行了三次if语句嵌套,还好这个方法比较短,可读性还不成问题。

而现实中很多业务规则比这复杂的多,以前看过一些实现的if嵌套多达10层的,方法也长的要命。当然一开始没有嵌套那么多层,只是后来随着时间的演变,业务规则发生了变化,增加了,后来的程序员就按照这种方式继续嵌套下去,慢慢演变至此,到我看到的时候就有10层了。

程序员有一种编程的惯性,特别是进行维护性编程时。一开始接手一个别人做的系统,不可能一下能了解和掌控全局。

当要增加新功能时,在原有代码上添加逻辑,很容易保持原来程序的写法惯性(考虑这样写更安全)。

所以一个10层嵌套if的业务逻辑方法实现,第一个程序员也许只写了3次嵌套,感觉还不错不失简洁。后来写4、5、6层的程序员就是懒惰不愿再改,到了写第8、9、10层的程序员时基本很可能就是不敢再乱动了。代码最后就变成了一大坨*。

考虑下上面个简单的例子,怎么改改比较好呢。我自己写了个实现如下:

	private String generateKey(String service, String method) {
		String head = "DBO$";
		String key = head + service + "." + method;
		
		// head + service(with package) + method
		if (key.length() <= 50) {
		    return key;
		}
		
		LOG.info("key = " + key);
		
		// head + service(without package) + method
		service = service.substring(service.lastIndexOf(".") + 1);
		key = head + service + "." + method;
		if (key.length() <= 50) {
		    return key;
		}
		
		// head + method
		key = head + method;
		if(key.length() <= 50) {
		    return key;
		}
		
		// last, we cut the string to 50 characters limit.
		key = key.substring(0, 48) + ".*";
		return key;
	}

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...