ios - 在路径数据模型或其他问题的情况下如何遵循干净的代码规则
问题描述
我真的很喜欢干净的代码设计和不同的架构模式和解决方案,比如 VIPER 等。我喜欢单一责任规则和 SOLID 原则。但是有时我们需要进行与用户数据相关的更正,这可能会涉及到我们需要编写额外的代码来解决/修复一些可能会破坏代码设计并增加其他用户对代码理解的复杂性的问题的情况。
让我举个例子:我有一个屏幕可以创建带有名称的练习,还有一个屏幕可以显示所有创建的练习。
- 我有一个名为的实体
Exercise
,它是一个NSManagedObect
. - 当进入创建练习屏幕时,我的代码会在数据库中创建一个空
Exercise
记录,如果我们不处理这种情况,如果应用程序崩溃,这可能会导致问题。 - 如果我输入一个名称并保存这个练习,一切都可以,但如果应用程序崩溃,我们将在数据库中有一个空练习。
我会说崩溃可能是由 iOS 或其他一些后台进程引发的,而不是由我的创建练习方法引发的。
假设现在我们将这个应用程序发布到商店,并且由于一些意外的崩溃,一些用户的数据库中有这个僵尸记录。
在此之前,我的代码是按照所有干净的代码规则设计的,但存在一些潜在的“僵尸”问题。
所以现在我需要以某种方式纠正这个问题。例如,在开始时,我可以运行一个方法来检查是否有任何没有名称的练习。没关系,这只是技术解决方案如何检查那些我不需要在这里回答的僵尸。我只想问应该如何使用干净的代码样式编写代码。
因为我会添加额外的代码来删除僵尸,实际上它不是我精彩架构的一部分。
我是否需要编写一些需要存储这些路径/修复功能的类,或者我是否还需要遵循其他一些规则。
可能可以在应用程序委托中放置一个在应用程序启动时调用removeAllZombies
的函数,但即便如此我也不喜欢。但是,如果我们说很多潜在的路径,那么代码可能会一团糟。
我知道这也是可测试性问题的一部分,但有时我们无法通过测试和动态路径数据模型来涵盖所有问题,向视图控制器、演示者、服务等添加大量额外行是一种非常快速的破解方法一个项目和项目代码设计规则。
解决方案
推荐阅读
- php - sql请求的优化
- angularjs - 当我为当前位置调用地理定位时。我面临这样的错误
- sas - SAS 代码。如何在 SAS 中绘制变量 y 在 x 上的动态(最简单的方法!)
- c# - ImageMagic 无法捕获异常
- laravel - 如何避免在laravel中使用没有模型的remember_token?
- amazon-web-services - 如何从 AWS cloudwatch 输入转换器创建 JSON
- javascript - 用于旋转页面上某些 div 元素的 Javascript 函数
- scala - 带 3 个参数的 zip 函数
- javascript - 在 Firefox 中是在重定向之前删除的 ajax 调用
- java - 规范中的 JPA AttributeConverter 搜索谓词