当前位置: 首页 > news >正文

C# 如何优雅的写代码[进阶篇]

文章目录

  • 前言
  • 相关文章
  • 如何让代码优雅
  • 知识点补充
    • enum枚举类型
    • ?null判定

前言

我之前发布过一些篇章,是专门关于代码优化的,距离我上一次[如何优雅的写C#]已经过去半年时间了,最近我又研究出了一些新东西。

相关文章

如何优雅的写C#,使用Visual studio

C# 继承,抽象,接口,泛型约束,扩展方法

C# 快速简单反射操作

C# 获取入参函数名

C# Task任务详解

C# 控制台彩色深度打印 工具类

C#小轮子:扩展方法

C#小轮子 Debug,Release,发布模式如何运行不同的代码

C# 元祖,最佳的临时变量。

如何让代码优雅

我对于优雅有几个简单的定义

  • 做的多,写的少
    • 尽可能的减少入参,只需要关键参数
  • 低耦合
    • 低耦合就是可改动行强,比如一个1米的积木改成10个0.1米的积木,这个就是降低耦合。
  • 阅读性,可维护性强
    • 尤其是可阅读性,逻辑性要符合人类正常思考问题,解决问题的思维。

知识点补充

这些其实都是很简单的知识点,我这里重新讲解一下好了

enum枚举类型

C#关于枚举类型Enum的用法详解,很细

枚举类型相当于静态字符串,这里不多讲解,不过枚举类型可以和扩展方法搭配使用。

public class MyTest
{public enum MyTestKey{Key1, Key2, Key3, Key4, Key5, Key6}}/// <summary>
/// 扩展方法必须写在静态类里面
/// </summary>
public static class MyTestExtension
{/// <summary>/// this指向枚举类型/// </summary>/// <param name="test"></param>public static void PrintValue(this MyTestKey test){Console.WriteLine(test.ToString());}
}

使用

static  void Main(string[] args)
{MyTestKey.Key1.PrintValue();Console.WriteLine("运行完成!");Console.ReadKey();
}

?null判定

List<string> list = null;//空值判断
Console.WriteLine(list?.Count);
//三元表达式
Console.WriteLine(list == null?"":list.Count );
//传统if/else
if(list == null)
{Console.WriteLine();
}
else
{Console.WriteLine($"{list.Count}");
}

相关文章:

C# 如何优雅的写代码[进阶篇]

文章目录 前言相关文章如何让代码优雅知识点补充enum枚举类型?null判定 前言 我之前发布过一些篇章&#xff0c;是专门关于代码优化的&#xff0c;距离我上一次[如何优雅的写C#]已经过去半年时间了&#xff0c;最近我又研究出了一些新东西。 相关文章 如何优雅的写C#&#x…...

【JavaEESpring】Spring, Spring Boot 和Spring MVC的关系以及区别

Spring, Spring Boot 和Spring MVC的关系以及区别 Spring&#xff1a;简单来说&#xff0c;Spring 是一个开发应用框架&#xff0c;什么样的框架呢&#xff1f;轻量级、一站式、模块化&#xff0c;其目的是用于简化企业级应用程序开发 Spring的主要功能: 管理对象, 以及对象之…...

【网络编程】传输层——TCP协议

文章目录 TCP协议TCP协议格式窗口大小六个标志位确认应答机制超时重传机制连接管理机制三次握手四次挥手 流量控制滑动窗口拥塞控制延迟应答捎带应答面向字节流粘包问题TCP异常情况TCP小结基于TCP的应用层协议TCP与UDP的对比 TCP相关实验CLOSE_WAIT状态实验TIME_WAIT状态实验TI…...

【数据结构与算法】如何衡量一个算法的好坏?

目录 1. 算法复杂度1.1 时间复杂度1.2 大O渐进表示法1.2.1 例子引入推导大O法1.2.2 举例 1.3 空间复杂度1.3.1 细分1.3.2 举例 2.什么是好的算法&#xff1f;3. 影响程序运行时间的因数 1. 算法复杂度 算法在编写成可执行程序后&#xff0c;运行时需要耗费时间资源和内存资源 。…...

在PostgreSQL中创建和管理数据库

PostgreSQL是一个强大、开源的关系型数据库管理系统&#xff0c;它提供了丰富的功能和灵活的配置选项&#xff0c;使得它成为许多开发者和组织的首选数据库之一&#xff0c;接下来我会介绍如何在PostgreSQL中创建和管理数据库。 一、安装和配置PostgreSQL 第一步&#xff0c;…...

从哪些方面做好电商系统的网站建设?

电子商务的迅猛发展&#xff0c;建设一款成功的电商系统网站成为企业取得竞争优势的重要一环。下面将从用户体验、网站设计、安全性和性能优化等方面&#xff0c;介绍如何打造一款优秀的电商系统网站。 一、用户体验 一款成功的电商系统网站必须注重用户体验&#xff0c;确保用…...

C++的Odyssey之旅——STL

W...Y的主页 &#x1f60a; 代码仓库分享&#x1f495; &#x1f354;前言&#xff1a;我们已经将基本语法了解的差不多了&#xff0c;现在我们就该进入C中最重要也是最富有特点的一部分——STL。在学习C语言中我们想要使用顺序表、链表等一些数据结构进行做题时都需要进行这…...

μC/OS-II---内核:多任务与调度

目录 内核&#xff1a;多任务&#xff08;ucos_ii.h文件的函数&#xff09;Task创建Task创建&#xff08;扩展&#xff09;Task删除/请求删除Task改变Task优先级Task挂起和恢复Task信息获取Task调度器上锁和开锁 内核&#xff1a;调度&#xff08;oc_core.c文件的函数&#xff…...

【紫光同创国产FPGA教程】——PDS安装教程

本原创教程由深圳市小眼睛科技有限公司创作&#xff0c;版权归本公司所有&#xff0c;如需转载&#xff0c;需授权并注明出处 一&#xff1a;软件简介 PangoDesign Suite是紫光同创基于多年FPGA开发软件技术攻关与工程实践经验而研发的一款拥有国产自主知识产权的大规模FPGA开…...

基于Fuzzing和ChatGPT结合的AI自动化测试实践分享

一、前言 有赞目前&#xff0c;结合insight接口自动化平台、horizons用例管理平台、引流回放平台、页面比对工具、数据工厂等&#xff0c;在研发全流程中&#xff0c;已经沉淀了对应的质量保障的实践经验&#xff0c;并在逐渐的进化中。 在AI能力大幅进步的背景下&#xff0c…...

基于Jaccard相似度的推荐算法---示例

目录 数据展示推荐算法的分类基于相似度基于流行度/上下文/社交网络 Jaccard相似度分析数据的特点可以考虑的方法计算方法优缺点计算用户之间的Jaccard相似度获取与给定最相似的10个用户对1713353的用户推荐10本书 数据展示 import pandas as pd import numpy as np# 读取CSV文…...

基于指数分布算法的无人机航迹规划-附代码

基于指数分布算法的无人机航迹规划 文章目录 基于指数分布算法的无人机航迹规划1.指数分布搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要&#xff1a;本文主要介绍利用指数分布算法来优化无人机航迹规划。 …...

vite基础学习笔记:13.Dialog 对话框 (用户注册与登录)

说明&#xff1a;自学做的笔记和记录&#xff0c;如有错误请指正 1. Dialog 对话框组件 目标效果&#xff1a;点击“登录/注册”&#xff0c;弹框 &#xff08;1&#xff09;创建全局组件&#xff0c;在官网中查询代码粘贴 &#xff08;2&#xff09; 注册和使用全局组件 &a…...

RedisTemplate 使用 pipeline 时需要注意的问题

RedisTemplate 使用 pipeline 时需要注意的问题 RedisTemplate 使用 pipeline 进行批量 set 时&#xff0c;需要把 key 和 value 都转为字节 1. 直接使用 getBytes() 转为字节&#xff0c;在读取数据时&#xff0c;会抛出以下序列化异常 //错误代码 protected void process(…...

uniapp 下载文件到手机

下载后端传递过来的文件 let thil this uni.showLoading({title: 下载中,mask:true }) uni.downloadFile({url: 接口地址, //仅为示例&#xff0c;并非真实的资源header: {"Authorization": token},responseType: blob,success: (res) > {if (res.statusCode 2…...

使用Drupal管理小型项目?试试Docker快速部署Drupal结合内网穿透实现远程访问

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525;个人专栏:《Linux深造日志》《C干货基地》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 文章目录 前言1. Docker安装Drupal2. 本地局域网访问3 . Linux 安装cpolar4. 配置Drupal公网访问地址5. 公网远程访问Drupal…...

BSP-STM32移植FreeRTOS

在stm32裸机工程中的Middlewares目录添加freeRtos源码 在裸机工程中的main中调用freertos接口...

【Spring】Spring IOCDI(万字详解)

文章目录 1. Spring是什么&#xff1f;2. 认识IOC2.1 传统程序开发1. Main.java2. Car.java3. Framework.java4. Bottom.java5. Tire.java 2.2 分析传统开发2.3 IOC程序开发1. Main.java2. Car.java3. Framework.java4. Bottom.java5. Tire.java 2.4 分析IOC开发2.5 IOC容器优点…...

ts 使用泛型来做类型映射

使用泛型来做类型映射&#xff0c;将对象(或数组)中类型转换为另一个类型 首先&#xff0c;定义一个类型Student // 定义一个类型Studentinterface Student {name: string,age: number}1、把Student的所有属性都变为可空的 type Nullable<T> {[p in keyof T]: T[p] || …...

Compose - 使用 Paging

一、添加依赖 查看官方最新版本 val paging_version "3.2.1" implementation("androidx.paging:paging-runtime:$paging_version") implementation("androidx.paging:paging-compose:$paging_version") 二、定义数据源 PagingSource 是对其它…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)

说明&#xff1a; 想象一下&#xff0c;你正在用eNSP搭建一个虚拟的网络世界&#xff0c;里面有虚拟的路由器、交换机、电脑&#xff08;PC&#xff09;等等。这些设备都在你的电脑里面“运行”&#xff0c;它们之间可以互相通信&#xff0c;就像一个封闭的小王国。 但是&#…...

【Oracle APEX开发小技巧12】

有如下需求&#xff1a; 有一个问题反馈页面&#xff0c;要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据&#xff0c;方便管理员及时处理反馈。 我的方法&#xff1a;直接将逻辑写在SQL中&#xff0c;这样可以直接在页面展示 完整代码&#xff1a; SELECTSF.FE…...

STM32标准库-DMA直接存储器存取

文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA&#xff08;Direct Memory Access&#xff09;直接存储器存取 DMA可以提供外设…...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级

在互联网的快速发展中&#xff0c;高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司&#xff0c;近期做出了一个重大技术决策&#xff1a;弃用长期使用的 Nginx&#xff0c;转而采用其内部开发…...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)

引言&#xff1a;为什么 Eureka 依然是存量系统的核心&#xff1f; 尽管 Nacos 等新注册中心崛起&#xff0c;但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制&#xff0c;是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...

Unit 1 深度强化学习简介

Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库&#xff0c;例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体&#xff0c;比如 SnowballFight、Huggy the Do…...

IT供电系统绝缘监测及故障定位解决方案

随着新能源的快速发展&#xff0c;光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域&#xff0c;IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选&#xff0c;但在长期运行中&#xff0c;例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...

如何理解 IP 数据报中的 TTL?

目录 前言理解 前言 面试灵魂一问&#xff1a;说说对 IP 数据报中 TTL 的理解&#xff1f;我们都知道&#xff0c;IP 数据报由首部和数据两部分组成&#xff0c;首部又分为两部分&#xff1a;固定部分和可变部分&#xff0c;共占 20 字节&#xff0c;而即将讨论的 TTL 就位于首…...

Swagger和OpenApi的前世今生

Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章&#xff0c;二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑&#xff1a; &#x1f504; 一、起源与初创期&#xff1a;Swagger的诞生&#xff08;2010-2014&#xff09; 核心…...

华硕a豆14 Air香氛版,美学与科技的馨香融合

在快节奏的现代生活中&#xff0c;我们渴望一个能激发创想、愉悦感官的工作与生活伙伴&#xff0c;它不仅是冰冷的科技工具&#xff0c;更能触动我们内心深处的细腻情感。正是在这样的期许下&#xff0c;华硕a豆14 Air香氛版翩然而至&#xff0c;它以一种前所未有的方式&#x…...