如何将COBOL程序员转变为现代程序员

tob*_*ope 17 cobol

我在一个企业环境中工作,在这个环境中,开始使用COBOL IMS和CICS进行编程的人主导着思维模式.今天,他们中的大多数都使用Java等更现代的语言编程.但是,如果你看看他们的代码和设计决策没有太大的改变

  • 方法很多屏幕很长
  • 大量的全局变量或它们的现代化身为单身模式
  • 在方法开始时大约有30个变量定义
  • 全局变量而不是参数
  • 而不是使用工厂方法一个巨大的开关语句
  • 滥用数据库表列因为"剩下足够的空间"
  • ...

这些人并不笨,他们大多数都很聪明.但向他们解释现代编码实践感觉就像为盲人描述颜色.您是否有任何经验或技巧可以教他们更现代的方法而不会冒犯他们?

man*_*eka 20

了解代码外观的最佳方法是阅读好的代码.尝试使用您自己的编码风格设置示例,并在代码审查期间轻轻指出其错误.这基本上只是一个观点问题; 就像俗话说的那样,如果你拥有的唯一工具是锤子,那么每个问题看起来都像钉子一样.这些程序员根据他们所经历的语言来查看所有内容,因此即使在编写Java时,他们的思维过程也在COBOL中.他们的编码风格仅仅反映了他们的思维过程.

除此之外,请大家阅读Code Complete.

  • 阅读书籍是程序员的低估资源. (7认同)
  • 但要注意RTFM综合症.如果您的贡献是"您应该在学校阅读更多书籍",那么沟通很快就会被打破. (3认同)

dr.*_*dr. 11

给他们购买"代码完整"的副本,让他们写一本书报告.

  • 那本书改变了我的生活 (3认同)

Bob*_*oss 10

一次使用一个反例可以解释为什么你的方式更好,更少痛苦,帮助他们按时回家,等等.一次去一个是非常重要的,但是,如果你真的在尝试有机地培养文化.一些例子:

  • 很长的方法:看,我看了你的长方法​​,并意识到你在两个地方使用相同的逻辑.我打破了这一点,现在你不必两次输入相同的代码.另外,我们只需要测试一次该部分.
  • 每种方法开始时的全局变量和许多定义:请参阅,我已将变量移近其使用点.现在,我编写的这个测试代码使用系统查杀空指针对您的代码产生副作用,但是不能使我的副作用.
  • 巨型开关:有时,巨大的开关很难避免(有时你不应该).也就是说,如果你正在尝试构建一个对象,那么"工厂"这个词就是在讲述.看,我的工厂方法有效地做了与你工厂相同的事情,但我让多态(例如)取代了一些switch-case管理.更少的代码=更少的错误=我们准时回家.

顺便说一句,我从来没有成功地为工程师分配阅读任务(尽管Kathy带来了Refactoring,这对于这类事物来说是一个很好的来源).对我来说有用的是阅读书籍,使用建议的技巧,展示成功以及如何让我的生活变得更轻松,然后,当"你怎么知道如何解决所有这些事情?"的挫败感 介绍,告诉他们有一本入门书.聪明的人会迅速将它从你的手中撕下来,你会在这个过程中失去皮肤.


小智 8

多年前,当我还是一名教授C和C++商业培训课程的讲师时,我意识到我和COBOL程序员之间可能永远不会有思想交流.我刚刚完成了关于malloc()和free()的课程部分,大多数下注者都满意,当课程中的一个COBOL家伙过来问道:

"但这个'记忆'的东西是什么?我为什么要用它?"

为了更具建设性,ny经验是COBOL程序员经过培训可以考虑两件事:

  • 记录
  • 你做的事情记录

这实际上离OO并不太远,我认为你需要了解的基本想法是,会有不同类型的记录,需要对它们做不同的事情,最好的解决方法是将记录和需要完成的事情放在一起来创建对象.

  • 辉煌.我想知道现在有多少Java程序员会问同样的问题...... (4认同)
  • 大声笑!用来制作咖啡的+1来自我的鼻子...... :-) (3认同)
  • 有一天,软件世界将回归到COBOL的思维方式......你有一个记录,你做的事情记录.其他一切都只是硬件计算机gobbledegook.无论如何,企业为什么要关心malloc.而你提到的"对象"也将走到尽头.毕竟,OOP只是我们发明软件以克服左/右脑不平衡的另一种方式.(PS.我不知道我刚刚说了什么.当时看来是个好话.) (2认同)