云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

专属服务器_4g服务器_优惠券

小七 141 0

简介。

作为ABAP开发人员,为各种用户情景创建自定义代码(少于10KLOC),当我开始在SAP中使用面向对象编程(OOP)时,我必须开始解决以下设计问题:

我的解决方案。

在我团队的旧技术文档中,我看到了visio格式的流程图(我没有可供选择的软件)更新visio),或者在Word或Excel中创建流程图/图表-在Word/Excel中创建图表对我来说不太舒服,它很慢,很麻烦,放置箭头和方框需要时间。虽然我没有尝试过很多图形化的专有绘图工具,但我认为使用箭头和方框的麻烦会非常相似。我决定用UML序列图和类图。

然后我搜索工具,我发现有一些工具可以用文本输入绘制图表。喜欢PlantUML.

PlantUML的语言很容易学习。PlantUML中的UML图很容易创建,它们的txt文件可以很容易地存储在Github上。它有各种许可证可供选择,它是开源的。我们团队中的ABAP代码是保密的,所以我将PlantUML下载到我的计算机上,所以我不使用web在线服务器来创建图表。对我来说,现在,用文本输入绘制图表比使用一些图形工具要好得多,有拖放箭头,方框…

当我有了这个新工具,然后在我的第一个下一个项目中,我开始使用它。我的计划是在最后创建我的图表。我按照以下步骤进行-我花了很多时间在我的头脑中设计(只在我的头脑中),然后我开始编码(在编码过程中根据新知识调整设计),在我完成编码后,我创建了类和序列图。这种方法的缺点是我花了太多的时间(比我想要的更多)在预先设计上(我试图在头脑中保留太多的东西,我不能把所有我想要的东西都只保留在头脑中…我发明了一些东西,然后就忘了它),我不能很好地思考接口的名称,数据类型,他们的签名会是什么样子。在开始编写代码之前,我错过了用图形化的方式来查看我的设计。

在下一个项目中,我开始更快地编写代码,并考虑设计的较小部分。这对我来说是一个好处,在编写代码之前,我并没有因为思考太多而头痛,我有一种感觉,我正在做一些事情,而不仅仅是思考设计。但这也导致我不得不更频繁地更改接口、类和方法的名称——因为在编写好代码之前我没有仔细考虑,设计受到了影响,重命名(虽然我使用Eclipse和测试驱动开发,所以我可以在几秒钟内运行回归单元测试)比我想的要花更多的时间(特别是如果对象在revtrac中,那么我需要从revtrac中删除它….创建对象而不将它们添加到revtrac意味着以后我需要单独做……)。而且,我仍然没有看到我的设计的大局。我只是在编码之后才重新创建了类和序列PlantUML图。

我意识到在开始编码之前我需要开始使用PlantUML图,好评返现卡,这样我可以更好地思考设计并看到更大的图景。但是我不想创建图,这会占用我太多的时间,我不会在代码中重用它们,我需要一种方法来强制自己在编码过程中保持更新,因为它们在项目结束时不会与代码同步。我意识到我在图中真正需要的是接口名、接口中的方法名、参数名、数据类型名、类名、异常名,店铺淘客,以便在代码中重用。所有这些名字必须是真实的名字,我将在代码中使用,没有无用的细节,图表应该是序列图,我需要看到如何接口调用对方。我开始从接口的角度来看待我的代码。

在我的下一个项目中,我是这样进行的,现在我仍然是这样做的。

在PlantUML图中更改名称、添加新接口很容易…只是在文本文件中进行更新。比我用真正的ABAP代码和真正的ABAP对象做这件事要容易得多。我发现当我创建图表时,实际上我已经在编码了。我可以在不使用ABAP编码的情况下深入研究设计,并尝试/探索不同的设计(如果需要,还可以将这些版本备份到Github)。现在,当我花了几天的时间只在图表上工作时,我不会有一种不好的感觉,那就是我预先设计了太多东西。因此,对我来说,创建这种图意味着编码和设计同时进行,几乎没有任何浪费。对我来说,它是针对接口进行编码的,这正是我面向对象编程所需要的抽象层次。它很好地补充了我的测试驱动开发(TDD),因为接口是我的类中的依赖项,我将其隔离到mock(mock对于TDD是不可避免的,并且只能从全局接口创建)。我在以前的博客中讨论过这个TDD方法。

这些优点迫使我始终保持图表最新,当我在编码过程中发现需要更改或扩展设计时,首先我去图表,在那里重新设计(我可以看到新的更改如何适应整张图片/设计),在那里更新,然后我回去将图表中的名称复制到代码中。下面是这样一个图和接口名称的示例。图表中的大部分文本可以直接复制到代码中。有一个非常小的浪费(文本不可重用)在图表中,数据挖掘和大数据,这是使图表强大的方式来显示设计没有烦人/令人不安的细节,我可以完全专注于设计,知道我会重用我在那里键入的文本。我只根据需要创建尽可能多的文档,而不是无用的文档。