Max*_*ler 15 java performance coding-style code-readability
我正在考虑使用匿名{}代码块在逻辑上区分同一方法调用中的"代码块" 的选项,这(理论上)应该提高代码的可读性.
我想知道以下哪两个代码段对你的眼睛更好?
另外,2个代码段是否编译为相同的字节码?换句话说,可以使用{}以任何方式伤害代码的性能吗?
public static String serviceMatch(HttpServletRequest servletRequest, RequestTypeEnum requestTypeEnum, ...censorsed..., RequestStatistics requestStatistics) {
Request request;
// We get the parser that fits the ...censorsed..., effectively transforming the HTTPReqeuest to application local "Request*" object
RequestParser parser = RequestParserFactory.getParser(...censorsed...);
// Populate basic parameters, the "heavy" data will be lazy loaded
request = parser.parse(servletRequest);
// Instead of polluting the parsers let's put it here... (unless we identify meaningful justifications for the other alternative of changing RequestParser.parse() interface.
request.requestType = requestTypeEnum;
// Store the request statistics object on the request, so that we have access to it from all over the code
request.requestStatistics = requestStatistics;
// Update timestamp when request was parsed
request.requestStatistics._1_end_parseRequest = System.currentTimeMillis();
/*
* ...censorsed...
*/
MatchResult matchResult = Matcher.findMatch(...censorsed...);
/*
* ...censorsed...
*/
String reply = ReplyFormatFactory.getFormatter(...censorsed...
// Update timestamp when reply finished construction
request.requestStatistics._6_end_formatReply = System.currentTimeMillis();
return reply;
}
Run Code Online (Sandbox Code Playgroud)
public static String serviceMatch(HttpServletRequest servletRequest, RequestTypeEnum requestTypeEnum, ...censorsed..., RequestStatistics requestStatistics) {
Request request;
/*
* Request parsing block
*/
{
// We get the parser that fits the ...censorsed..., effectively transforming the HTTPReqeuest to application local "Request*" object
RequestParser parser = RequestParserFactory.getParser(...censorsed...);
// Populate basic parameters, the "heavy" data will be lazy loaded
request = parser.parse(servletRequest);
// Instead of polluting the parsers let's put it here... (unless we identify meaningful justifications for the other alternative of changing RequestParser.parse() interface.
request.requestType = requestTypeEnum;
// Store the request statistics object on the request, so that we have access to it from all over the code
request.requestStatistics = requestStatistics;
}
// Update timestamp when request was parsed
request.requestStatistics._1_end_parseRequest = System.currentTimeMillis();
/*
* ...censorsed...
*/
MatchResult matchResult = Matcher.findMatch(...censorsed...);
/*
* ...censorsed...
*/
String reply = ReplyFormatFactory.getFormatter(...censorsed...
// Update timestamp when reply finished construction
request.requestStatistics._6_end_formatReply = System.currentTimeMillis();
return reply;
}
Run Code Online (Sandbox Code Playgroud)
感谢您的评论,Maxim.
Don*_*nut 55
如果你想{ }在同一个方法中添加额外的东西只是为了便于阅读,我的建议是考虑将你的方法重构为几个较小的方法.
这些较小的方法具有易于自身理解并且更可重复使用(如果它们"松散耦合")的优点.参见单一责任原则.
Kar*_*nek 13
如果你来到状态,将括号括在代码的某些部分(如选项2)中会很方便,你应该将它移动到它自己的方法.这就是提高可读性的原因.
顺便说一句,我也认为你并不需要评论代码的每一行.例如,即使没有评论,时间戳更新也是不言自明的.