有一种方法可以返回一个表格,其中包含在程序文件夹中找到的 csv 文件的名称:
public static List<string> GetListOfTables() { var tables = new List<string>(); do { tables = Directory.GetFiles(".", "*.csv").Select(file => Path.GetFileName(file)).ToList(); if (tables.Count == 0) { Output.Invoke("\nNo .csv files are found, " + "please put a table csv file in the program folder and press <Enter> to continue"); while (Console.ReadKey(true).Key != ConsoleKey.Enter) { } } } while (tables.Count == 0); return tables; }
它具有内置验证(而不是排除),如果没有找到文件,用户需要将文件复制到文件夹并按下一个键。
这个方法有单一职责(最终返回工作表,检查只是一个检查)还是多个(返回工作表并检查用户操作的正确性)?
是否可以使用验证块创建单独的ValidationCsvFiles方法,然后将其包含或委托给 main 方法?
- 有一个类返回包含特定文件数据的工作表
static class CsvParser
{
public static List<string> GetListOfTables() { }
public static List<List<object>> GetTable(string tableName) { }
}
此类具有单一职责(导致返回带有数据的工作表,带有文件列表的工作表是辅助工具)或多个(返回带有数据的工作表和带有文件的工作表)
毕竟,一个有文件的工作表可以在另一个类中实现吗?
在 Clean Architecture... Robert Martin 指出,传统上单一职责原则的描述如下:
值得一提的是,用户不是“嗯,这样的阿姨……”。为了不通过重写整章来夸大答案,我建议您购买这本书并阅读有关在这种情况下用户(或参与者)和模块的含义的进一步解释。
违反 Martin 单一责任原则的迹象:
回顾一下:单一职责原则不是关于一个模块是否可以分解成更小的模块,负责更小的区域。这种碎片化并不总能改进代码,有时还会导致荒谬的后果。喜欢这个耸人听闻的故事:NPM 和 left-pad:我们是否忘记了如何编程?.
单一职责原则是关于如何避免将来更改代码的麻烦。