首页 > 编程语言 >C# 面向对象的7大原则之单一职责原则(Single Responsibility Principle,SRP)

C# 面向对象的7大原则之单一职责原则(Single Responsibility Principle,SRP)

时间:2024-08-30 14:50:39浏览次数:10  
标签:set 职责 get C# sum Single SRP score public

定义

单一职责原则(SRP):一个类只能有一个引起它变换的原因。

通俗来讲就是一个类只负责一个职责,若负责的职责太多,可能会由于其中一个职责的变化而影响其他职责。

举例

假设有一个Student,它既负责了学生的基本信息,又负责了学生平均成绩的计算,这就违反了单一职责原则。

    public class Student
    {
        public string Name { get; set; }
        public int Age { get; set; }

        public double CalculateAvgScore(List<double> scoreList)
        {
            double sum = 0;
            foreach (var score in scoreList)
            {
                sum += score;
            }
            return sum / scoreList.Count;
        }
    }

更好的做法是将学生的基本信息管理和成绩计算分为两个类:

基本信息类:
    public class Student
    {
        public string Name { get; set; }
        public int Age { get; set; }
    }
成绩计算类:
    class ScoreCalculator
    {
        public double CalculateAvgScore(List<double> scores)
        {
            double sum = 0;
            foreach (var score in scores)
            {
                sum += score;
            }
            return sum / scores.Count;
        }
    }

每个类都负责单一职责,从而使代码更好的进行维护和扩展。

标签:set,职责,get,C#,sum,Single,SRP,score,public
From: https://blog.csdn.net/qq_43648978/article/details/141718175

相关文章

  • 工作 6 年,@Transactional 注解用的一塌糊涂
    接手新项目一言难尽,别的不说单单就一个@Transactional注解用的一塌糊涂,五花八门的用法,很大部分还失效无法回滚。有意识的在涉及事务相关方法上加@Transactional注解,是个好习惯。不过,很多同学只是下意识地添加这个注解,一旦功能正常运行,很少有人会深入验证异常情况下事务是否能......
  • MYSQL实现Oracle中decode函数
    背景:写oracle脚本迁移mysql时,mysql不支持decode函数思路:理解decode函数使用方法及参数含义1、decode(expression,value,result1,result2)     理解:如果expression=value,则输出result1,否则输出result22、decode(expression,value1,result1,value2,result2,value3,res......
  • ChatGPT学习之旅 (10) 系统全球化小助手
    LOTO****示波器统计曲线和故障分析pass/fail测试虚拟示波器可以应用在工业自动化检测中,除了常规的检测波形和测量值参数以外,由多个行业客户定制和验证的统计曲线和故障分析(pass/fail)功能也为工业自动化检测带来极大的便利。(一)故障分析(pass/fail)的基础:统计曲线功能在信号检测的......
  • Cron表达式
    Cron表达式是一种用于描述定时任务执行时间的字符串格式,在Unix、Linux、MacOSX等操作系统中被广泛使用。它通过一系列的时间字段来描述一个定时任务应该在哪些时间点执行。它通常由6~7位组成,年份可以省略。每个时间字段都可以是数字、星号、逗号、减号、正斜杠和问号这些特殊字......
  • POA:已开源,蚂蚁集团提出同时预训练多种尺寸网络的自监督范式 | ECCV 2024
    1.概述ApacheHive是一款建立在Hadoop之上的数据仓库工具,它提供了类似于SQL的查询语言,使得用户能够通过简单的SQL语句来处理和分析大规模的数据。本文将深入分析ApacheHive的源代码,探讨其关键组件和工作原理,以便更好地理解其在大数据处理中的角色。2.内容在开始源代码分析之前......
  • CMake构建学习笔记11-minizip库的构建
    准确来说,minizip其实是zlib提供的辅助工具,位于zlib库的contrib文件夹内。minizip提供了更为高级一点的接口,能直接操作文件进行压缩。不过,有点麻烦的是这个工具并没有提供CMake构建的方式。那么可以按照构建giflib的方式,自己组织CMakeList.txt,正好这个项目的代码量并不多。另一个......
  • PowerShell Select-String:在字符串和文件中查找文本
    语法Select-String[-Culture<String>][-Pattern]<String[]>[-Path]<String[]>[-SimpleMatch][-CaseSensitive][-Quiet][-List][-NoEmphasis][-Include<String[]>][-Exclu......
  • maven 插件之 maven-shade-plugin,解决同包同名 class 共存问题的神器
    开心一刻有一天螃蟹出门,不小心撞倒了泥鳅泥鳅很生气地说:你是不是瞎啊!螃蟹说:不是啊,我是螃蟹概述maven-shade-plugin官网已经介绍的很详细了,我给大家简单翻译一下Thispluginprovidesthecapabilitytopackagetheartifactinanuber-jar,includingitsdependenciesa......
  • opc da 服务器数据 转IEC61850项目案例
    目录1 案例说明 12 VFBOX网关工作原理 13 应用条件 24 查看OPCDA服务器的相关参数 25 配置网关采集opcda数据 46 用IEC61850协议转发数据 67 网关使用多个逻辑设备和逻辑节点的方法 98 在服务器上运行仰科OPCDA采集软件 109 案例总结 121 案例说明在OPCDA服务器上......
  • MySQL-进阶篇-SQL优化(插入数据优化、主键优化、order by优化、group by优化、limit优
    文章目录1.插入数据优化1.1使用批量插入1.2批量插入数据时手动提交事务1.3按主键的顺序插入1.4大批量插入数据时使用load指令2.主键优化2.1数据组织方式2.2页分裂2.3页合并2.4主键的设计原则2.4.1降低主键的长度2.4.2使用AUTO_INCREMENT自增主键2.4.3......