手游建筑美术资源

下面是命名的OOP方法,这我想在我的代码遵循一个简单的原则:这是一个动词 ,如果它操纵 ,这是一个名词 ,如果它的基础之上 。 而已。 两者之间什么都没有。 诸如saveFile()getTitle()不适合使用,必须重命名和重构。 此外,“操作”的方法必须始终返回void ,例如print()save() 。 让我解释。

首先,我必须说,这种想法与Bertrand Meyer在他的《面向对象的软件构造》一书中提出的想法非常相似,他在书中提出,我们将一个对象的方法分为两个明显分开的类别:查询和命令。

这个原理背后的思想是很哲学的。 让我们从构建器开始,这些构建器应该创建或找到一个对象然后返回它。 假设我有一个书店,请我给我一本书的名字:

interface Bookshelf {Book find(String title);
}

显然,它是一个“构建者”(或用迈耶的术语来说是一个“查询”)。 我要一本书,这本书已经送给我了。 但是,问题出在方法的名称上。 它被称为“查找”,这意味着我知道如何处理这本书。 将会发现。

但是,这不是我们应该如何对待对象的方式。 我们绝不能告诉他们如何做我们希望他们做的工作。 取而代之的是,我们必须让他们决定是要找到,构造这本书,还是从内存缓存中取出这本书。 查询时,我们必须说出要查找的结果,然后让对象决定如何构建该结果。 此方法更合适的名称是book()

interface Bookshelf {Book book(String title);
}

经验法则是:构建者始终是名词。 如果该方法返回某些内容,则必须为名词。 最好其名称应说明该方法返回的内容。 如果是一本书,则将其命名为book() 。 如果是文件,则调用方法file()等。以下是一些好的构建器示例:

interface Foo {float speed(Actor actor);Money salary(User user);File database();Date deadline(Project project, User user);
}

相反,以下是一些名称不正确的生成器的示例:

interface Foo {float calculateSpeed(Actor actor);Money getSalary(User user);File openDatabase();Date readDeadline(Project project, User user);
}

在构建者名称中没有动词的位置!

顺便说一句,不仅是名字。 由于其名称不包含动词,因此构建器不应对封装的实体进行任何修改。 它只能创建或找到某些东西并将其返回。 就像纯函数一样 ,它一定不能有任何副作用。

接下来,有“操纵者”(或用迈耶的术语来说是“命令”)。 它们为我们做了一些工作,修改了对象封装的实体。 它们与构建者相反,因为它们实际上是对由对象抽象的世界进行更改。 例如,我们要求Bookshelf向其添加一本新书:

interface Bookshelf {void add(Book book);
}

该方法将书籍添加到存储中。 我们不知道存储将如何修改。 但是我们知道,由于方法的名称是动词,因此会进行修改。

而且,操纵器不得返回任何东西。 我们将其视为回应的类型始终是void 。 这主要是为了将代码的命令性部分与声明性部分分开。 我们要么接收对象,要么告诉他们该怎么做。 我们绝不能将这些活动混为一谈。

这些规则的目的是使代码更简单。 如果您遵循它们,并且所有构建器仅返回对象,而机械手仅修改世界,则整个设计将变得更易于理解。 方法将更小,其名称更短。

当然,通常很难找到这些名称。 有时,您可能想从操纵器返回某些东西,或者让您的构建器进行一些更改,例如对缓存进行更改。 尝试抵制这种诱惑并坚持原则:方法要么是构建器,要么是操纵器,中间没有东西。 上面的示例相当原始,现实生活中的代码要复杂得多。 但这就是原理将帮助我们的事情-使代码更简单。

我也知道名词/动词原则,该原则建议始终将类命名为名词,并将其方法命名为动词。 我认为这是一个错误的主意,因为它不会将制造商与操作员区分开,并鼓励我们始终根据命令性指令进行思考。 我相信,即使我们有时不得不从其他对象获取它们,而不是通过构造函数实例化它们,OOP也必须更多地涉及对象的声明性组合。 这就是为什么我们在大多数情况下确实需要构建器的原因,并且还必须看到它们与其他方法(操纵器)之间的明显区别。

翻译自: https://www.javacodegeeks.com/2018/08/builders-and-manipulators.html

手游建筑美术资源

手游建筑美术资源_建筑商和机械手相关推荐

  1. 在手机平台还原端游画质 《天刀》手游的美术升级之路

    <天涯明月刀>手游(下文简称<天刀>手游)上线三个多月来,多次登顶畅销榜,并长期位于榜单Top 5,取得了非常优异的成绩.<天刀>手游为什么能这么成功?如果你翻看玩 ...

  2. 方舟手游服务器传服后服务器会不稳定吗,方舟生存进化手游转服规则说明_转服有哪些规则_3DM手游...

    方舟生存进化中服务器也是可以转服的,不过服务器间之间互相转服是有限制和规则,对于不知道的人,今天就给大家带来转服规则说明吧,希望可以帮助到大家. 转服规则说明 方舟生存进化转服可以转移哪些? 1.转移 ...

  3. steam怎么看邮箱绑定的账号_lol手游appleid怎么绑定拳头账号 英雄联盟手游账号绑定方法_英雄联盟手游...

    我们在玩ios版英雄联盟手游的时候,是可以直接使用苹果id账号登录的,同时我们也可以将苹果id绑定到拳头账号上,那么lol手游appleid怎么绑定拳头账号呢,这里就来和大家分享一下苹果id和拳头账号 ...

  4. 手游传奇架设教程_问道手游如何多开?

    但凡是手游都是可以多开的,方法有简单的,也有复杂的. 最基本的方法,一个手机下载一款手游,这个肯定是没有问题吧! 增加实体手机的数量,就可以达到多开的目的, 比如,某宝的二手手机,一个150左右一台, ...

  5. 英雄联盟怎么解除小窗口_英雄联盟手游怎么加好友_英雄联盟手游怎么加好友一起玩_资讯...

    英雄联盟手游是腾讯联合英雄联盟开发商拳头开发的英雄联盟手游.不仅能够高度还原端游的经典操作和竞技体验,也具有非常多创新的元素,对于英雄联盟的全球生态布局具有重要意义.英雄联盟手游游戏中有非常多的英雄可 ...

  6. 计算机音乐奇迹再现乐谱,天谕手游奇迹再现乐谱_奇迹再现乐谱代码分享_3DM手游...

    在天谕手游中玩家可以把自己喜欢的歌写进乐谱,在这里小编给大家分享一下奇迹再现这首歌的乐谱代码,喜欢的小伙伴不要错过哦,下面小编给大家带来<天谕手游>奇迹再现乐谱代码分享,不清楚代码的小伙伴 ...

  7. 猫和老鼠手游的python代码_猫和老鼠手游猫鼠通用技巧讲解 赶紧进来好好向大佬们学习学习...

    :原标题:猫和老鼠手游猫鼠通用技巧讲解 赶紧进来好好向大佬们学习学习 为了使自己的技术进一步提升,决定好好向大佬们学习,好东西还是要和小伙伴们一起分享的嘛,所以小不点稍做了些整理,本次的干货攻略主要为 ...

  8. 手游图片素材提取_如果你想获得心爱手游中的图片素材,可以试试这款软件!...

    因为之前几十期视频的缘故,会有很多小伙伴通过私信或评论想要获得对应的手游图片素材,但授人以鱼不如授人以渔,本期专栏视频(目前懒得做,如有需要稍后再补)我就分享自己使用的一款软件,让你可以"自 ...

  9. 全职高手手游服务器维护,全职高手手游最新版预约_全职高手手游删档内测版本v1.0.0_第一手游网...

    细节高还原的超人气IP<全职高手>的MMOARPG手游,结合全明星选手养成系统和酣畅淋漓的网游战斗系统,支持3D无锁定视角,支持多人实时在线战斗,精美的不只是画面,用心的不只有玩法,游戏内 ...

最新文章

  1. oracle查询表中的某一行,oracle查看所有表及各表行数?
  2. python多个日志模块怎么隔离_在多个模块中使用Python日志logging
  3. 环形、扭环、LFSR计数器
  4. AspNet MVC与T4,我定制的视图模板
  5. python实例 列表
  6. springboot spring.config.location外挂配置文件实战
  7. PowerDesigner中在生成的数据库脚本中用name列替换comment列作为字段描述的方法
  8. 案例:java进制互转
  9. Hive+LDAP+Sentry
  10. 【Elasticsearch】Fielddata is disabled on text field fielddata=true
  11. node.js抓取数据(fake小爬虫)
  12. 【文本匹配】Question Answering论文
  13. CeH2.5-NaH-Al复合储氢材料/金属Ce氢化物催化NaH-Al复合储氢材料/Ce氢化物催化的NaAlH4复合储氢材料定制
  14. python遥感图像处理_遥感数字图像处理
  15. 考研数学:常见的的泰勒公式
  16. AVCaptureDevice中通过调用VideoZoomFactor方法调整焦距实现拉近拉远镜头进行拍照录制视频(动画缩放画面,不闪屏)
  17. 如何使用Burp suite抓取Fiddler转发的流量包
  18. wipe、root、底包、rsd是什么意思?小白入门释义
  19. 分区数据恢复之ubuntu13.10格式化整个硬盘
  20. MySQL数据库管理(五)日志管理、备份与恢复

热门文章

  1. 人工智能——图像分析第二期练习
  2. 牛客网 【每日一题】5月28日题目精讲 Protecting the Flowers
  3. CF1580B Mathematics Curriculum(笛卡尔树、树形dp)
  4. P7599-[APIO2021]雨林跳跃【二分,倍增,ST表】
  5. P2149-[SDOI2009]Elaxia的路线【最短路】
  6. jzoj4671-World Tour【图论,bfs】
  7. codeforces1437 E. Make It Increasing——最长上升子序列
  8. 【树形区间DP】加分二叉树(ssl 1033/luogu 1040)
  9. Network of Schools POJ - 1236 tarjan强连通分量缩点
  10. Flowable学习笔记(二、BPMN 2.0-基础 )