- 浏览: 69195 次
- 性别:
- 来自: 杭州
最新评论
-
bo_hai:
assembly:single 不包含源代码,只包含依赖的cl ...
关于创建可执行的jar文件 -
lsy:
相当详细的好文!
关于创建可执行的jar文件 -
steven0lisa:
学习了。不过在有动态代码生成的项目中,就要谨慎用了。
Hide Method(隐藏方法) -
steven0lisa:
好久没看源代码了,没记错的话,因为是由以下原因造成的:1.ke ...
编码最佳实践系列之二 -
steven0lisa:
最后一点确实很有艺术,学习了~~~
编码最佳实践系列之一
文章列表
在Space 1st Apps的项目中,我们使用了基于Spring的单元测试 , 并结合DBUnit对数据库应用程序做单元测试。
其中,数据源我们使用了Oracle、MySql数据库,Oracle数据源只有一个数据库,而MySQL数据源是一个由多台MySQL数据库组成的分 ...
WHAT
在循环中,一次循环做了两件事情,将循环分解,重复这个循环,每次只做一件事情
潜在问题:性能问题,如果遇到性能问题,先让代码清晰可读,让你更快找到性能优化点,再做优化
本次重构涉及的基本重构较多,主要有:
Split Loop(分解循环)
Extract Method(提炼方法)
Inline Temp(内联临时变量)
Replace Temp With Query(用查询函数代替临时变量)
Rename Temp(重命名临时变量)
Split Temporary Variable(分解临时变量)
HOW
重构前的代码清单
Student类是一个哑 ...
WHAT
如果只有一个then,而没有else的分支条件表达中,出现否定操作符,还算合情合理,例如:
if (!someCondition()) {
doSomeThingsForFalse();
}
但是,如果有两个分支,否定的条件表达式在if分支,这个条件语句就会降低可读性,需要颠倒条件表达式
WHEN
否定操作在前一个分支的if、then、else语句
HOW
重构前的代码
package reverse.conditional;
public class SomeClass {
public void someMethod() {
...
WHAT
双重否定的条件语句,可以使用一个肯定的条件语句代替
记住:双重否定 = 肯定
本次重构涉及到的基本重构手法:
Extract Method(提炼方法)
Inline Method(内联方法)
Substitute Algorithm(替换算法)
WHEN
双重否定,虽然机器能够很好理解并正确执行,但是不符合人的自然语言习惯,且令人迷惑,降低代码可读性
HOW
重构前的代码
package remove.doubles.negative;
public class SomeClass {
private boolean found = ...
WHAT
隐藏方法是最简单、最基础的重构手法之一,当有一个public方法,没有被其他任何类用到,把这个public方法的访问修饰符改为private。
本次重构涉及到一个基本的重构手法:
Rename method,也即Change Method Signiture(更改方法签名,in Eclipse)
WHEN
当在另一个类中去除对这个public方法的调用时
过度设计,这个public方法从来没有被其他任何类调用过
HOW
最初的代码
package hide.method;
public class SomeClass {
pub ...
上周四下午,放翁同学在TOP群中问了这样一个小问题,聊天记录摘录如下:
有同学知道如何用maven来将第三方jar的代码也打入到生成的项目jar中?就好比eclipse可以直接将部分依赖打入到项目jar中
一看到打包,对于jar类型的项目,运行mvn package,就等同于运行mvn jar:jar,那放翁同学的问题,一定是与jar插件有关了,在Maven官方网站,查阅了一下jar插件的相关文档,未果。
临近下班时,我找放翁同学当面了解了一下他真正的需求,就是把该项目的依赖的源码都打入到一个可执行的jar包中,我看了看Maven官方网站的插件列表,以前对assembly插件 ...
MemCached是什么?
MemCached是一个高性能、分布式、内存对象缓存系统,
官方网站:http://www.danga.com/memcached/
下载地址:http://www.danga.com/memcached/download.bml
目前两个版本:
1.4.0 1.2.x
MemCached的安装
Linux下源代码编译安装MemCached
$ wget http://www.danga.com/memcached/dist/memcached-1.2.8.tar.gz
$ tar zxvf memcached-1.2.8.tar.gz
...
- 2009-07-21 18:58
- 浏览 4107
- 评论(0)
众所周知,Maven的强大功能来源于它的强大的插件体系,而它的报表功能更是依赖于它的插件体系。下面,我们就看看报表有多么强大。
首先,我们随意创建一个Maven项目,使用向导式指令,根据提示,:
mvn archetype:generate
运行过程中的关键数据:
Define value for groupId: : com.mycompany.myapp
Define value for artifactId: : myapp
Define value for version: 1.0-SNAPSHOT: : 1.0
Define value for package: c ...
今天,在使用SecureCRT的过程中,无意中选择了View菜单的Full Screen子菜单,结果窗口就变成全屏的了,查看了一下右键上下文菜单,也没有找到恢复全屏的菜单,后来想了一下,如果可以把View菜单显示出来,就可以选择Full Screen子菜单了,所以,我使用菜单View的快捷键Alt + V,这样,View菜单就显示出来了,然后再勾选Full Screen子菜单,就可以恢复全屏了。
后来,上网查了一些资料,原来还有个快捷键可以直接操作全屏,按一下组合键Alt + Enter,变成全屏,再按一下Alt + Enter,就可以恢复全屏了,你不妨试一下!
本月17、18日,我参加了由支付宝主办的“2008精武门之WEB安全研讨会”。会上,听了很多大侠的讲义,我作为一个门外客,只算是一个扫盲,虽然听不懂,但是还是仔细听完了。
首先出场的是腾讯安全中心TST(Tencent Security Team)总监杨勇,演讲主题是《互联网企业安全建设的思考》,在腾讯,具有一横一竖的产品线,组织架构有专门的安全中心,下有:应用运维、业务安全、信息安全,面对众多和严峻的安全问题,TST的应对策略是“专职专岗,立足运维,植根研发,服务产品”。
QQ安全中心:http://safe.qq.com
接下来,Discuz的剑心带来了《WEB应用程序中的字符集攻 ...
今天上午和同事讨论String的使用,众所周知,==比较两个字符串String的引用,equals比较两个字符串包含的值,那么大家看看,下面这几个的输出结果是什么样子呢?
public static void main(String[] args) {
String str = "hello";
System.out.println(str == "hello");
String str2 = new String("hello");
System.out.println(str2 == "hello&qu ...
在Java编程语言中,大家接触最多的,莫过于String和StringBuffer类了吧,这两个类简单到你不屑一顾,但是你在编码实践过程中真正用好它们了吗?下面是我在代码Review过程中总结出来的若干点,和大家分享一下:
避免重复文字包含重复的字符串字面的代码通常可以将字符串声明为一个Constant Field得到改善,如果你使用Eclipse,请选中字符串"hello",然后选中菜单“Refactor->Extract Constant...”,OK例如:
public class SomeClass {
public void someMethod() { ...
避免空指针:
/**
* 判断应用是否有月租
*
* @param onlineProfile
* @return 有月租返回true,无月租返回false
*/
private boolean isAppHasRent(AppOnlineProfile onlineProfile) {
return onlineProfile == null ? false : "y".equals(onlineProfile.getHasRent());
}
集合List转换为数组[]
/**
* 从应用订购列表中获得用户Id数组
* ...
- 2008-10-23 11:28
- 浏览 1237
- 评论(1)
编码中请统一使用commons-logging包
日志声明:
private static final Log LOG = LogFactory.getLog(ClassName.class);
注意:ClassName是当前类的名称;最好不要从其他类copy过来这段声明,如果忘记了更改ClassName,这样会出问题的(张冠李戴)
使用之前,先做判断
if (LOG.isInfoEnabled()) {
LOG.info("Some infomation to print out in english");
}
注意:不要使用中文打印日志信息 ...
- 2008-10-23 11:19
- 浏览 1768
- 评论(0)