首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在这个代码评审中,审阅者提到了什么?

在这个代码评审中,审阅者提到了什么?
EN

Software Engineering用户
提问于 2016-03-11 18:26:28
回答 2查看 603关注 0票数 0

我发送了求职申请的代码,并得到了以下评论:

  • 关于项目结构:不存在物理分离。逻辑分离是存在的,但不符合最佳实践。事情似乎是“按照解决方案所需的顺序”分开的。关于编码约定:白间距不一致,超出约定,忽略不可变性,明确引用"self“等。关于自述文档实践:自述不符合我们关于使用、假设或如何设置解决方案的最佳实践。关于可维护性、可扩展性、可伸缩性或性能体系结构:没有架构的迹象。App可以被描述为一个庞大的视图控制器,它使用了来自一组助手类的服务。关于干和实原则:在几个地方都有重复的代码,就实体原则而言,ViewController有几个责任。上帝的观察:关于对依赖项使用包管理器: Cocoapods被使用了。错误处理和日志记录:在某种程度上,错误处理和日志记录引起了关注。

谁能给我一个详细的解释,每一个问题提出的评论人?

如果有人对我对挑战的反应感到好奇:Github链接

很抱歉给你这么长的短信,但我想我是在通过分享我的经验来帮助别人。

EN

回答 2

Software Engineering用户

回答已采纳

发布于 2016-03-11 19:12:14

一次处理每一项问题:

关于项目结构

在最好的情况下,这个项目可能是主观的,但是项目通常是通过逻辑地将您的代码划分为子文件夹或子项目,根据它们的一般职责区域,或者它们所属的“层”来构建。例如,模型、视图、控制器、核心应用程序逻辑、共享/公共组件等。

关于编码约定:白间距不一致,超出约定,无视不可变性,明确引用“自我”等。

在编写代码时,严格遵守编码标准是很好的。例如:https://github.com/raywenderlich/swift-style-guide

就编码标准而言,最重要的事情之一是一致性。不一致的代码使用起来不太好,只是看上去草率和不专业。

不变性在这里解释:https://en.wikipedia.org/wiki/Immutable_对象

关于自述文件实践

我不清楚评论员在自述文件中想要什么,但您的自述文件似乎实际上是空的。想必审查员希望看到一些用户级的文档,这些文档是用某种友好的英语语言编写的(例如,如何第一次使用应用程序,它是什么,它做什么,它如何工作,等等)。

关于可维护性、可扩展性、可伸缩性或性能体系结构

在许多方面,这与“实心”和“干”原则相交叉。但也表明您的解决方案缺乏不同“层”的逻辑分离。换句话说,审阅者认为您已经创建了一个“大泥球”

应用程序和系统通常由几个层组成,每个层彼此干净地分开;例如:

  • 数据层(即与持久数据一起工作的数据访问层)
  • 业务逻辑层(核心域逻辑--例如,实际处理所有请求、处理所有数据、计算结果等的逻辑)。
  • 应用层(特定于应用程序的逻辑--例如基于用户输入创建请求以调用业务逻辑层中的某些功能)。
  • 表示层(视图逻辑-例如MVC模式;处理用户交互、布局、数据表示等)。

评审员提到了一些具体的词语:

  • 可维护性-要使代码具有可维护性,就需要有人轻松地阅读、理解和遵循。类应该是松散耦合的。函数应该具有较低的圈复杂度。它需要容易证明,并有尽可能多的单元测试覆盖率。再一次,这与固体/干燥联系在一起。
  • 可扩展性--意味着代码的设计方式应该是添加新功能,而不是为了改变许多现有的类/函数。实心:开放/封闭原则
  • 可伸缩性/性能--想必审查员认为,在大量使用的情况下,您的代码不会很好地扩展。

关于干和固原则

这些是常见的软件设计原则,值得花时间学习,并确保您有一个清晰的理解:

SOLID - https://en.wikipedia.org/wiki/SOLID_(面向对象的)_(设计)

干- https://en.wikipedia.org/wiki/Don%27t_重复_你自己

无论是谁审查了您的代码,都清楚地发现了您提交的解决方案中的一些违规行为。违反这些原则的典型代码“标志”包括(但不限于)

  • 做太多事情的班级(即有太多的责任)
  • 长函数(有些主观,但许多人认为任何超过30行都是“太长”)
  • 函数太多的类
  • 逻辑,它在几个地方重复,可以被合理化为一个类和/或函数。

我快速查看了您的代码,您的ViewController显然违反了这些原则,特别是您的viewDidLoad()方法,它似乎做了太多的事情。

总的来说,我从查看您的代码中得到的印象(我希望评审人员也会这样做)是,没有任何证据表明您在处理复杂问题或处理在开发人员团队中编写的代码方面有丰富的经验。

最有可能的是,基于这个挑战,他们对你的主要关注是,你无法接受一个比这个挑战大很多倍的项目,有一个团队,并且能够把它分解成层和模块,或者以其他开发人员可以使用的方式构造代码。

但作为一次学习经验,你似乎得到了一些好的、有价值的反馈;下一步可能是采取你已经得到的解决方案,尝试在不同的层之间正确地构造它,并利用这个项目学习如何应用坚实的原则。

票数 22
EN

Software Engineering用户

发布于 2016-03-11 18:56:56

“干”的意思是“不要重复自己”。他们告诉你“几个地方有重复的代码.”。这很糟糕。如果您必须更改它一次,您可能需要在十几个(或一百)个地方改变它。(许多年前,我不得不对一个真正不懂干巴巴的人编写的代码进行一次大修。不好玩.)

“实心”指的是一堆东西。见这里。他们说,"ViewController有几个责任“,这是一个博佐不-不是在坚实的。

票数 3
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/312488

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档