今天和同事关于一个编程方式的处理产生分歧。在做基础信息维护时,我习惯于在控件值发生变化时直接给类的相应属性赋值,在提交的时候只需要做一些相应的判断(其实我认为有些判断也是可以放在控件失去焦点的时候去做),然后提交,这样可以避免所有事件和处理都放在提交的时候去做,数据列表的数据源与类集合进行绑定;而同事则认为这样不安全,不好控制,影响系统效率,应该所有的判断、和数据的合法性都直接在提交的时候去做,数据列表的数据源直接与数据集进行绑定,这样可以提高效率,请问大家都是怎样处理的,到底哪一种方式更能提高效率。

解决方案 »

  1.   

    没错B/S模式是不能用我这种,我们现开发的是c/s模式的。
      

  2.   

    没错B/S模式是不能用我这种,我们现开发的是c/s模式的。
      

  3.   

    无论是B/S还是C/S,我都支持你同事,顶他一也
      

  4.   


    其实数据的正确与否在哪一步都可以判断,值发生变化都是要赋给相应的对象的,只是早赋值和晚赋值的问题,就像有人喜欢用FOR循环,有人喜欢用WHILE一样。
      

  5.   

    恩,我支持你们同事的意见。
    这个和cs/bs无关,效率估计相差无几,但是严格的说还是你同事的效率高一点。
    另外,他的方法还便于维护属性,因为实例的属性赋值更集中。
      

  6.   

    我也支持你同事的意见。
    如果把数据检验放到每个控件的失去焦点事件分散判断,比较糟糕。程序到处充满了lostfocus这样的事件处理代码,很难维护代码。一旦程序有变更什么的,去找到并处理那些事件程序将是噩梦,如果漏掉了那个事件程序,将可能是无法挽回的损失。
      

  7.   

    从交互性来说,你的做法比较好,谁也不想填了3,50个空,然后弹出一个框告诉你前面有10几个填错了。
    每填一次就提醒一下更好。
    你同事的做法,3,5年前大家都这么做的。尤其是b/s模式下。
    但是现在不一样了,很多注册,数据提交的b/s模式下,都用ajax每一步都判断,不过一般不会跳出弹出框这么极端和笨的办法,而是在界面上提示用户填写的数据有问题。
    至于后面讨论的在那一层判断数据的有效性。每一层大概都要有判断。数据层要判断数据类型有效性,业务逻辑层要判断数据逻辑的正确性,界面层可能都要做判断。要想做好的程序,就不要怕麻烦,当然这个麻烦要在可控范围内。
      

  8.   

    楼上几位说的都有道理但如果你保存数据之前不集中检验,只在离开焦点的时候检验数据,那客户端很容易绕过你的检验机制的楼主的那个离开焦点进行数据判断的做法很容易就能被人混入垃圾数据的
    不管是b/s还是c/s我们以前的b/s系统做法是:
    离开焦点的时候由js判断数据合法性,用户提交的时候再在后台判断一次数据合法性我的观点:不管你怎么做,提交后的集中检验数据这个步骤是不能省略的