主页 > 云储存 > > 正文

分布式存储_天乩之白蛇传说百度云资源_是什么

浏览:

分布式存储_天乩之白蛇传说百度云资源_是什么

我已经有一段时间没有编写代码了(在项目管理任务上),物联网安全,所以我不能像我想的那样多地编写代码,但是最近我有时间做一些代码,并且再次提醒我使用面向对象的好处。这次是封装,这是我在上一篇博客中间接提到的(为什么是面向对象的?–类属性),但我觉得这是一个更通用的主题,应该有自己的入口。

为了提供一些背景,我做了一些与材料估价相关的工作,我想找出过去几年某个工厂的平均价格,只考虑货物收据和库存转移。

我有一个物料移动行项目的对象,我把所有的值/数量相加,然后计算na平均值。在代码方面,我有这样的东西:

当我测试程序时,我发现了一个与STOs相关的bug,其中传输的值被发布在641中,而不是101中。我不得不改变GET\u VALUE()方法来考虑这个逻辑。如果你推断到GET\u VALUE()在多个地方使用的情况,你可以很容易地看到封装的好处。

但是为什么这是面向对象编程特有的呢?我也可以用程序编程来封装对吗?是的,你可以,但是有一些缺点:

1.太冗长

等价的程序代码,低价云服务器,仅仅为一个属性就会是这样的:

不仅写代码需要更多的工作(懒惰占了上风),更难阅读。

2.缺乏一般规则

如果你认为GET\u值()只有(在第一个版本)一个SELECT语句到MSEG,你可以很容易地得出结论,许多程序员不会为SELECT创建表单,他们会直接在循环中编写SELECT(请忘记for ALL ENTRYS讨论,不是重点)。

然后你可以说"我为每个DB访问创建一个表单",但这只是一个例子。GET\u VALUE()可以返回对象属性之间的计算:lv\u VALUE=me->quantity*me->unit\u price。不要试图让我相信一个程序程序员只会为乘法创建一个形式。

在面向对象的编程中,有一些规则来执行这个,我不必想:

我不必想如果GET\u VALUE()只是一个SELECT或100行代码,它必须根据OO规则存在,获取移动值的唯一方法是通过get\u value(),因此只有1个访问点可以更新。

封装非常重要,因为事情会发生变化,就像在我的示例中,一开始只是从MSEG中选择,后来变成了对STO有不同行为的东西。

PS:我知道我在性能上受到了冲击,因为封装,但拥有可伸缩和无错误的代码是我处理的大多数项目的优先事项。

嗨,Joao,

总的来说,我同意你的观点。

但是,我必须提到,你的例子可能正好证明了这一点相反,因为它展示了SAP中OO的主要缺点:大量数据的SQL选择(在我看来,在当前的ABAP工具中,OO无法有效地处理这些数据)。

如果我理解正确,您在循环中对大量记录执行selects from DB。

这当然是,可能会导致严重的性能问题。

如果你问我,这是OO作为ABAP中唯一的编程范例没有被广泛采用的主要原因。

你好,

我可以在性能上受到影响,就像我在最后一行中说的,但我从未发现它是一个交易破坏者。

我没有在代码中显示如何填充LT\u MOVEMENTS表(我会有这个),但这是movement line item类的静态方法中的一个mass SELECT,一个SELECT可以在单个SELECT中检索所有对象的大部分数据。

我也没有显示GET\u VALUE()中的实际内容,如果假设MSEG的内部值(通过setter)被分配给创建对象的静态方法中的类的属性,那么就不需要在GET\u value()中使用SELECT SINGLE,因此没有性能问题。

在GET_值()中,我仍然可以选择使用从MSEG获取的值或添加额外的逻辑(对于偶尔的STO),如果我在循环中直接指定MSEG字段,我将无法做到这一点。

最后一句话,如果我看到的大多数程序都是程序最佳实践的清晰示例,我会接受不使用OO的理由,但事实并非如此。根据我的经验,大多数时候人们不使用OO是因为他们不知道它,不知道它是因为他们不了解它的优点。

好吧,

我当然不知道你封装的方法背后的代码是什么

但是,如果你使用静态方法进行选择(不知道确切的流程是什么,尽管如此)你正在从OO概念中移除边缘。

我以什么方式从OO概念中移除边缘?

我在line item类中对MSEG做DB选择,创建对象并使用getter/setter根据数据库填充值。

我以后还是要使用getter来检索属性,而不是盲目地检索MSEG值,所以封装是坚持的。这就是为什么在类方法中使用getter/setter是很重要的,而不是忽略"Private"而选择me->attribute='X'或X=me->attribute.

所以你对每个项分别执行select from DB,然后呢?

我必须承认我不确定我是否遵循了您的流程。

据我所知,有两种实施方案:

1。为单选预先指定所有文档/行号。这种方法可能需要复杂的实现或限制关注点的分离。为每个项目执行单独的DB选择。

为了简化,假设类对MSEG的所有字段都有私有属性(不是必需的,但为了简单)

所有DB逻辑都在ZCL\U MOVEMENT\U item=>GET\U ITEMS\U WITH\U FILTER(FILTER),它包含对DB的选择,范围在"FILTER"(即物料、工厂、移动)中定义类型,秒单客返利机器人,等)。

选择*从MSEG进入LS\u MSEG,其中A在filter->S\u X,B在filter->S\u Y和…..

创建对象lou项

exporiting

mblnr=LS\u MSEG-mblnr

mjahr=LS\u MSEG-mjahr

zeile=LS\u MSEG-zeile.

lou项->设置\u db\u内部值(LS\u MSEG-xxx)。

lou项->设置\u db\u数量(LS\u MSEG-yyy)

追加lou项返回

结束选择

一次批量选择。多个对象。GET\u INTERNAL\u VALUE()可以直接返回DB INTERNAL VALUE或添加额外的逻辑。

请注意,使用该类的人不需要了解其背后的DB结构,因为他们只知道可以使用从webservice检索的数据实例化对象。

感谢您的澄清。

这应该可以完成工作。

但是,它只适用于非常简单的情况。

只要您不打算为每个业务需求实现单独的类和/或get\实例方法(get\ ITEMS\ WITH\ U FILTER),它就不会处理以下任何情况:

1。从不同的表中进行多个选择(您希望使用延迟评估,而不是预先选择所有数据)。

2。多个业务对象的组合(即复杂连接)。

对于(一个非常简单的)示例,选择物料组为X的物料的所有物料文档项。

发表评论
验证码: 点击我更换图片

注:网友评论仅供其表达个人看法,并不代表本站立场。

热门文章

  • 对象存储_网站集约化建设_哪家好
    对象存储_网站集约化建设_哪家好

    对象存储_网站集约化建设_哪家好

    当戴夫·麦克卢尔首次提出海盗指标的概念时,它震撼了创业界的核心。尽管你现在可能知道他是500家初创企业的幕后推手,但在贝宝(PayPal)上市前担任...

  • 数据库_数据库事务原理_安全稳定
    <strong>数据库_数据库事务原理_安全稳定</strong>

    数据库_数据库事务原理_安全稳定

    为CloudFlare客户提供对源站的免费和高性能加密2014年秋季,CloudFlare推出了Universal SSL,并将通过HTTPS访问的网站数量增加了一倍。在短短几天内,我们颁发了...

  • 百度云_企业邮箱怎么设置签名_排行榜
    百度云_企业邮箱怎么设置签名_排行榜

    百度云_企业邮箱怎么设置签名_排行榜

    在快节奏的销售世界里,时间是无价的。这正是为什么你需要停止切换标签,使用新的Pipedrive Chrome扩展直接从Gmail使用Pipedrive的强大功能。如果你是一个狂...

  • 游戏服务器_节点服务器_优惠
    <strong>游戏服务器_节点服务器_优惠</strong>

    游戏服务器_节点服务器_优惠

    nomad0.11为任务引入了生命周期部分,可以用来表示任务依赖关系。这可以用来表示任务组中任务之间的任务依赖关系,甚至可以利用consur来表示任务间的任...

  • 企业邮箱_华为云techwave_企业级
    <strong>企业邮箱_华为云techwave_企业级</strong>

    企业邮箱_华为云techwave_企业级

    遵守一套不断发展的数据隐私法规的需求可能看起来很繁重,或者会导致公司停滞不前,不知道下一步该采取什么措施。如果不了解这些法规对日常运营的...

云储存

更多 >
  • <strong>大带宽_plsql创建数据库_优惠券</strong>
    大带宽_plsql创建数据库_优惠券

    每天都能看到IdM社区中的协作努力,一些真正有才华的it专家与更大的IdM社区分享他们的知识(主题领导委员会鞠躬),这真是太棒了。有时,当试图实现...

  • 服务器_新东方企业邮箱_怎么买
    服务器_新东方企业邮箱_怎么买

    SAP CodeJam通过推出我们的子活动系列"虚拟SAP CodeJam"全面拉开了今年的序幕。虚拟SAP CodeJam以剧集的形式出现,我们计划每两个月进行一次。这些活动允许有...

云储存免备案CDN_服务器和虚拟主机区别_新用户
云储存文件存储_b2c网站建设_促销
云储存域名注册_pg数据库_是什么
云储存分布式数据库_l网站建设_高性价比
云储存京东云_beatless百度云_年度促销