一个类中300多个public变量,是否有点多

一个类中300多个public变量,是不是有点多?
    今天看了我们公司的一个工程,发现有一个5000行左右代码量的类,有300多个public类型的变量,是不是有点多了?
------解决方案--------------------
简直就是垃圾代码的典型。偶亲身遇到过类似的现象,虽然暴露的成员没这么多,但都是一丘之貉,当时我得到的反馈是:这样写方便。鉴于与对方公司的合作关系以及人际关系,偶也不好说啥。
------解决方案--------------------
是有点多!一个类功能应该单一,属性应该清晰才有利用后期的维护和扩展的!


------解决方案--------------------
这个得看实际需求。
光靠数量,还真不好说,多还是少。
但可能设计确实有问题。
就像一个数据库的一条记录,有300多个字段,确实有些问题,能拆分的就拆分。

------解决方案--------------------
扁平的一级或两级结构有时是比多级的树形结构管理、维护、修改更方便。
------解决方案--------------------
引用:
简直就是垃圾代码的典型。偶亲身遇到过类似的现象,虽然暴露的成员没这么多,但都是一丘之貉,当时我得到的反馈是:这样写方便。鉴于与对方公司的合作关系以及人际关系,偶也不好说啥。
哈哈
------解决方案--------------------
引用:
简直就是垃圾代码的典型。偶亲身遇到过类似的现象,虽然暴露的成员没这么多,但都是一丘之貉,当时我得到的反馈是:这样写方便。鉴于与对方公司的合作关系以及人际关系,偶也不好说啥。

毛主席说:“决定战争胜负的关键因素是人不是武器。”
一个类中300多个public变量,是否有点多
------解决方案--------------------


一个公司的老程序员走了,来了一个新程序员,他打开老程序员留下的代码.

"什么? 一个类有他妈5000个public变量??" .

经过一周的重构,他以完美的新架构重构了老代码,从中找出了无数的bug,运行效率也提升了100%.

又过了一周,他的老板提了个和现在的新架构完全不沾边的需求.他很努力的调整了架构,再次重构了代码
又过了一周,他的老板提了个需求,程序员发现新架构并没有完全包含原有的功能.他很努力的再次调整了架构,再次重构了代码.
又过了一周,程序员自己觉得在新架构中可以修改一下地方使其更加完美,包含更多内容.......
又过了一周,他的老板又提了个需求变更,并要求在1天内做完...............
就这样过了3个月,程序员已经想不起最初的架构是什么样的了.
就这样又过了3个月,程序员已经想不起他所希望的新架构应该是什么样的了.
又过了3个月,那是一天的深夜,程序员愤怒地看着自己的老代码:"我当初为什么要把视频压缩功能和控制卷帘窗开关分成两个类呢! 真是愚蠢! "
又过了三个月,程序员不干了.他留下了一个带有5000个public成员的类
------解决方案--------------------
这算什么

我见过7000行的函数,里面还有N多的宏。
------解决方案--------------------
引用:
一个公司的老程序员走了,来了一个新程序员,他打开老程序员留下的代码.

"什么? 一个类有他妈5000个public变量??" .

经过一周的重构,他以完美的新架构重构了老代码,从中找出了无数的bug,运行效率也提升了100%.

又过了一周,他的老板提了个和现在的新架构完全不沾边的需求.他很努力的调整了架构,再次重构了代码
又过了一周,他的老板提了个需求,程序员发现新架构并没有完全包含原有的功能.他很努力的再次调整了架构,再次重构了代码.
又过了一周,程序员自己觉得在新架构中可以修改一下地方使其更加完美,包含更多内容.......
又过了一周,他的老板又提了个需求变更,并要求在1天内做完...............
就这样过了3个月,程序员已经想不起最初的架构是什么样的了.
就这样又过了3个月,程序员已经想不起他所希望的新架构应该是什么样的了.
又过了3个月,那是一天的深夜,程序员愤怒地看着自己的老代码:"我当初为什么要把视频压缩功能和控制卷帘窗开关分成两个类呢! 真是愚蠢! "
又过了三个月,程序员不干了.他留下了一个带有5000个public成员的类


短篇小说啊,写得形象生动....
------解决方案--------------------
引用:
这算什么

我见过7000行的函数,里面还有N多的宏。

我们这里也有,不过那是个parser的一个大switch。
------解决方案--------------------
学术和工业代码是不同的。
数据库也一样。
你见过哪个工业用的数据库是遵守所有范式的?
------解决方案--------------------
能运行。。。没bug 就可以。。。
------解决方案--------------------
引用:
一个公司的老程序员走了,来了一个新程序员,他打开老程序员留下的代码.

"什么? 一个类有他妈5000个public变量??" .

经过一周的重构,他以完美的新架构重构了老代码,从中找出了无数的bug,运行效率也提升了100%.

又过了一周,他的老板提了个和现在的新架构完全不沾边的需求.他很努力的调整了架构,再次重构了代码
又过了一周,他的老板提了个需求,程序员发现新架构并没有完全包含原有的功能.他很努力的再次调整了架构,再次重构了代码.
又过了一周,程序员自己觉得在新架构中可以修改一下地方使其更加完美,包含更多内容.......
又过了一周,他的老板又提了个需求变更,并要求在1天内做完...............
就这样过了3个月,程序员已经想不起最初的架构是什么样的了.
就这样又过了3个月,程序员已经想不起他所希望的新架构应该是什么样的了.
又过了3个月,那是一天的深夜,程序员愤怒地看着自己的老代码:"我当初为什么要把视频压缩功能和控制卷帘窗开关分成两个类呢! 真是愚蠢! "
又过了三个月,程序员不干了.他留下了一个带有5000个public成员的类

这个世界上唯一不变的是变化,要拥抱变化。
------解决方案--------------------
代码洁癖的话,看一段,久经考验的fortran 老代码的片段。。。

一个某学科的研究者,他没有计算机科班教育。。。。
他如何给专业程序员讲解那复杂的数学方程,然后让程序员替他编写出漂亮的代码?


    40   STEP1=STEP-(YJD_SLB(N+1)-C)/WGZ_SLB(N)
  T1=TJS_SLB(N)+(TGZ_SLB(N)-TJS_SLB(N))*(EXP(STEP1*AT(N)))
  TGZ_SLB(N+1)=TJS_SLB(N)+(T1-TJS_SLB(N))*(EXP(-STEP*AT(N)))
  DO I=KRS,N+1
     R0(I)=RGZ_SLB(I)
     Tjs0(I)=TJS_SLB(I)
         CALL QS_PT_R(PGZ_SLB(I),TGZ_SLB(I)+THS00,RGZ_SLB(I))
         CALL QS_PT_H(PGZ_SLB(I),TGZ_SLB(I)+THS00,HGZ_SLB(I))
         HGZ_SLB(I)=HGZ_SLB(I)/HHS00
         CALL ZQS_BH_PH(PGZ_SLB(I),H1,H2)
         H1=H1/HHS00
         H2=H2/HHS00
         XGD_SLB(I)=(HGZ_SLB(I)-H1)/(H2-H1)
     TJS_SLB(I)=TGZ_SLB(I)+QFS_SLB/(FBM_SLB*ARS20_SLB)
  END DO
  ER=ABS(RGZ_SLB(1)-R0(1))
  ETjs=ABS(TJS_SLB(1)-Tjs0(1))
  DO I=KRS,N+1
     IF (ABS(RGZ_SLB(I)-R0(I)).GT.ER) ER=ABS(RGZ_SLB(I)-R0(I))
     IF (ABS(TJS_SLB(I)-Tjs0(I)).GT.ETjs) ETjs=ABS(TJS_SLB(I)-Tjs0(I))
      END DO
  IF (.05.GE.(ER+ETjs)) GOTO 80
  GOTO 10
80   CONTINUE                                      
      CALL BH_P_TBH(PGZ_SLB(N+1),TBH)