论坛首页 Java企业应用论坛

编程中一个很常见的问题,有帮助的

浏览 29350 次
精华帖 (1) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (17)
作者 正文
   发表时间:2008-12-12   最后修改:2008-12-12
fjlyxx 写道

已经给出一个背景了,就是 根据用户输入--》组装SQL-》执行数据库操作-》返回结果(解析结果)

用第二种方式....
你说的已经是你的答案了.

但在现实中:
是用户输入,用户输出, 用户需求1,用户需求2,用户需求3.有可能还有用户需求4.....
现在没有需求4但很可能会加上需求4或需求5....
那么用第一种方式是最合适的....

用哪种方式,与你用的中文描述有直接的关系....

PS现在的系统大多用方式 1 主要还是由于每层的代码总量太大.合起来人类很难理解.

PS:楼上...链式写法我看了就想到了jquery.....等我出去吐一下先/
0 请登录后投票
   发表时间:2008-12-12  
难道你们的系统都没有进行过重构吗?  好的系统是重构出来的,好好的看看重构的原则,如果你没有这么做过,你怎么会发现模式的重要。如果你的接口都是随便定义的那么你怎么能体会这两种方式的区别呢?
public Object findUser(final Map parameters) {
return this.getSqlMapClientTemplate().queryForObject("findUser", parameters);
//      |                      |                                                          | 
//   返回结果       组装SQL并执行数据库操作                         根据用户输入

这完全是一个不合格程序员写的代码。

去看看自己作的系统中有多少这样的情况,不是我自大,我只是想提醒这么一种常见的错误,让后辈人少走点弯路。
0 请登录后投票
   发表时间:2008-12-12  
fjlyxx 写道
难道你们的系统都没有进行过重构吗?  好的系统是重构出来的,好好的看看重构的原则,如果你没有这么做过,你怎么会发现模式的重要。如果你的接口都是随便定义的那么你怎么能体会这两种方式的区别呢?
public Object findUser(final Map parameters) {
return this.getSqlMapClientTemplate().queryForObject("findUser", parameters);
//      |                      |                                                          | 
//   返回结果       组装SQL并执行数据库操作                         根据用户输入

这完全是一个不合格程序员写的代码。

去看看自己作的系统中有多少这样的情况,不是我自大,我只是想提醒这么一种常见的错误,让后辈人少走点弯路。

我见过很多这样的代码.....
很多很多.....
容我再吐一次回来跟你说.
0 请登录后投票
   发表时间:2008-12-12  
我只是觉得LZ的头像上的小女孩好可爱。。。。。。。。
1 请登录后投票
   发表时间:2008-12-12  
就写代码而言,其实也要关系代码的纵向和横向的关系。

如果代码只是为了实现功能,忽略了这些的必须注意的问题。那么也许有一天你要对这个系统进行扩展和维护的时候你将发现 你无从下手。 而且第一种的实现方式会隐藏很多BUG,建议在写完代码后可以进行必要的重构。 最少不要让人觉得你是在写流水帐。
好的习惯会给你减少很多麻烦的。
0 请登录后投票
   发表时间:2008-12-12  
fjlyxx 写道
就写代码而言,其实也要关系代码的纵向和横向的关系。

如果代码只是为了实现功能,忽略了这些的必须注意的问题。那么也许有一天你要对这个系统进行扩展和维护的时候你将发现 你无从下手。 而且第一种的实现方式会隐藏很多BUG,建议在写完代码后可以进行必要的重构。 最少不要让人觉得你是在写流水帐。
好的习惯会给你减少很多麻烦的。

if(jQuery) (function($){
	
	$.extend($.fn, {
		fileTree: function(o, h) {
			// Defaults
			if( !o ) var o = {};
			if( o.root == undefined ) o.root = '/';
			if( o.script == undefined ) o.script = 'jqueryFileTree.php';
			if( o.folderEvent == undefined ) o.folderEvent = 'click';
			if( o.expandSpeed == undefined ) o.expandSpeed= 500;
			if( o.collapseSpeed == undefined ) o.collapseSpeed= 500;
			if( o.expandEasing == undefined ) o.expandEasing = null;
			if( o.collapseEasing == undefined ) o.collapseEasing = null;
			if( o.multiFolder == undefined ) o.multiFolder = true;
			if( o.loadMessage == undefined ) o.loadMessage = 'Loading...';
			
			$(this).each( function() {
				
				function showTree(c, t) {
					$(c).addClass('wait');
					$(".jqueryFileTree.start").remove();
					$.post(o.script, { dir: t }, function(data) {
						$(c).find('.start').html('');
						$(c).removeClass('wait').append(data);
						if( o.root == t ) $(c).find('UL:hidden').show(); else $(c).find('UL:hidden').slideDown({ duration: o.expandSpeed, easing: o.expandEasing });
						bindTree(c);
					});
				}
				
				function bindTree(t) {
					$(t).find('LI A').bind(o.folderEvent, function() {
						if( $(this).parent().hasClass('directory') ) {
							if( $(this).parent().hasClass('collapsed') ) {
								// Expand
								if( !o.multiFolder ) {
									$(this).parent().parent().find('UL').slideUp({ duration: o.collapseSpeed, easing: o.collapseEasing });
									$(this).parent().parent().find('LI.directory').removeClass('expanded').addClass('collapsed');
								}
								$(this).parent().find('UL').remove(); // cleanup
								showTree( $(this).parent(), escape($(this).attr('rel').match( /.*\// )) );
								$(this).parent().removeClass('collapsed').addClass('expanded');
							} else {
								// Collapse
								$(this).parent().find('UL').slideUp({ duration: o.collapseSpeed, easing: o.collapseEasing });
								$(this).parent().removeClass('expanded').addClass('collapsed');
							}
						} else {
							h($(this).attr('rel'));
						}
						return false;
					});
					// Prevent A from triggering the # on non-click events
					if( o.folderEvent.toLowerCase != 'click' ) $(t).find('LI A').bind('click', function() { return false; });
				}
				// Loading message
				$(this).html('<ul class="jqueryFileTree start"><li class="wait">' + o.loadMessage + '<li></ul>');
				// Get the initial file list
				showTree( $(this), escape(o.root) );
			});
		}
	});
	
})(jQuery);
0 请登录后投票
   发表时间:2008-12-12  
各有好处,异常一层层抛出也有好处的,就是不容易找到到底所那里抛出了
0 请登录后投票
   发表时间:2008-12-12  
一般都会选第二个啊!一般编程中好像都是第二种吧!
0 请登录后投票
   发表时间:2008-12-12  
抛出异常的爱 写道
fjlyxx 写道

已经给出一个背景了,就是 根据用户输入--》组装SQL-》执行数据库操作-》返回结果(解析结果)


PS:楼上...链式写法我看了就想到了jquery.....等我出去吐一下先/


请不要把当前场景简单广义认为是链式写法,仅当前场景
0 请登录后投票
   发表时间:2008-12-12   最后修改:2008-12-12
fjlyxx 写道
难道你们的系统都没有进行过重构吗?  好的系统是重构出来的,好好的看看重构的原则,如果你没有这么做过,你怎么会发现模式的重要。如果你的接口都是随便定义的那么你怎么能体会这两种方式的区别呢
public Object findUser(final Map parameters) {
return this.getSqlMapClientTemplate().queryForObject("findUser", parameters);
//      |                      |                                                          | 
//   返回结果       组装SQL并执行数据库操作                         根据用户输入

这完全是一个不合格程序员写的代码。

去看看自己作的系统中有多少这样的情况,不是我自大,我只是想提醒这么一种常见的错误,让后辈人少走点弯路。


请给你出你解决当前问题的代码!用代码说话,让我少走弯路。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics