C#,入门教程(21)——命名空间(namespace)与程序结构的基础知识

上一篇:

 C#,入门教程(20)——列表(List)的基础知识icon-default.png?t=N7T8https://blog.csdn.net/beijinghorn/article/details/124094382

编写软件(大软件称为系统)与盖大楼一个道理。
假设咱们现在需要盖一座名为“天梯大厦”的大楼,一定设计两方面的内容:
(1)周围有哪些城市基础设施需要接入?
     网?TV?水?污水?电?气?暖?
(2)盖几层?每一层都干什么?
     设备层?顶层?

命名空间(namespace)与程序结构就是关心这些问题。

一、命名空间(namespace)

命名空间分为两种。

1、基础设施类

.NET 和第三方(你也可以是)提供了很多已经写好的工业化标准的基础代码,并编译成 dll 供你直接调用;
这些基础库,只需要在程序中 using 即可。如:

using System;
using System.IO;
using System.Text;
using System.Data;
using System.Linq;
using System.Drawing;
using System.Threading;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Threading.Tasks;
using System.Diagnostics;
using System.Windows.Forms;using Newtonsoft.Json;
using Legalsoft.Truffer;...

2、自行建造类

这类命名空间就是按自己需求进行设计与命名了。
同样应该采用多层次的命名方法,如同大楼每一层给与不同的名字一样,甚至可以对每一间房子给与不同的名字。

namespace K50018.Basic
{class set.
}

或:

namespace K50018.Algorithm.Graph
{class set.
}


二、文件结构

1、相关目录

稍微大一点的软件,都会有很多的 cs 文件,如何归类与设计的文件结构比较合理呢?

强烈建议在工程目录下创建 App_Code 子目录,用以保存工程相关的所有 namespace 的 class 文件。
并且按类别予以区分。

比如,幸运之门50018.COM的目录结构,按命名空间区分:

\App_Code
\App_Code\Basic  存储常用的 Helper 类的基础静态类
\App_Code\K50018 存储核心数据分类代码
\App_Code\K50018\Basic 数据分析的基础代码
\App_Code\K50018\Entity 数据体(从数据库、文件获得)的相关代码
\App_Code\K50018\Algorithm 数据分析的算法代码
\App_Code\K50018\Graph 生成走势图表等分析结果的代码


。。。

2、partial 的使用

很多  类(class)具有较多的功能(函数),写在一个文件里面不利于维护。
应该用 partial 修饰符,并将类的函数分别写道不同的 cs 文件中去。
比如:

\App-Code\Legalsoft\Algorithm\PatternSearch-KMP.cs

using System;namespace Legalsoft.Algorithm
{public static partial class PatternSearch{public static List<int> KMP(string text, string pattern){。。。}}
}


\App-Code\Legalsoft\Algorithm\PatternSearch-Booyer_Moore.cs

using System;namespace Legalsoft.Algorithm
{public static partial class PatternSearch{public static List<int> Booyer_Moore(string text, string pattern){。。。}}
}


关于更多的 namespace 

不建议使用,或尽量少使用 别名!
此谓:姓名伴一生,奶名不出门。

下一篇:

C#,入门教程(22)——函数的基础知识icon-default.png?t=N7T8https://blog.csdn.net/beijinghorn/article/details/124181689

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/416609.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

UI开发布局-HarmonyOS应用UI开发布局

UI页面的构建不用再像Android开发过程中在.xml文件中书写&#xff0c;可直接在页面上使用声明式UI的方式按照布局进行排列&#xff0c;构建应用的页面。 如下代码使用Row、Column构建一个页面布局&#xff0c;在页面布局中添加组件Text、Button&#xff0c;共同构成页面&#…

VSCode OpenGL 环境搭建

目录 下载glfw、glad、安装vscode插件C/C Project Generator 下载glfw Download | GLFW 下载 glad https://glad.dav1d.de/ vscode 插件安装&#xff1a; C/C Project Generator 创建C项目&#xff1a;commondp 项目结构如下图&#xff1a; 添加glfw、glad 添加glfw 头…

ICBE 2024第十二届深圳国际跨境电商交易博览会

ICBE 2024第十二届深圳国际跨境电商交易博览会 暨中国跨境电商综试区发展高峰论坛 展会时间&#xff1a;2024年9月2日-4日 展会地点&#xff1a;深圳会展中心&#xff08;福田&#xff09; 指导单位:广东省商务厅 主办单位&#xff1a;广东省电子商务协会/扩展集团 承办单…

Kafka-RecordAccumulator分析

前面介绍过&#xff0c;KafkaProducer可以有同步和异步两种方式发送消息&#xff0c;其实两者的底层实现相同&#xff0c;都是通过异步方式实现的。 主线程调用KafkaProducer.send方法发送消息的时候&#xff0c;先将消息放到RecordAccumulator中暂存&#xff0c;然后主线程就…

C++_Lambda表达式的完整介绍

目录 1. 什么是Lambda表达式 1.1 四种表达式的含义 1.2 lambda表达式各个成员的解释 2. 捕获列表 3. 编译器如何看待Lambda表达式 参考文章 参考: C Lambda表达式的完整介绍 - 知乎 c在c11标准中引入了lambda表达式&#xff0c;一般用于定义匿名函数&#xff0c;使得代码…

【java基础】String、StringBuffer和StringBuild 那些事

String 基本特性 String是一个final类&#xff0c;代表不可变的字符序列。字符串是常量&#xff0c;用双引号引起来表示。它们的值在创建之后不能更改。String对象的字符内容是存储在一个字符数组value[]中的。 String的继承图 Serializable 在 Java 中&#xff0c;Seriali…

Electron中苹果支付 Apple Pay inAppPurchase 内购支付

正在开发中&#xff0c;开发好了&#xff0c;写一个完整详细的过程&#xff0c;保证无脑集成即可 一、先创建一个App 一般情况下&#xff0c;在你看这篇文章的时候&#xff0c;说明你已经开发的app差不多了。 但是要上架app到Mac App Store&#xff0c;则要在appstoreconnect…

中央空调安装冷媒配管基本要求一

冷媒配管施工三原则:清洁、干燥、气密 施工流程&#xff1a; 安装机组-按施工图配管-氮气置换&钎焊-管道吹洗-气密试验-真空干燥 配管的安装 R410A冷媒配管要求 材料:磷酸脱氧无缝铜管&#xff0c;设计压力:4.0Mpa以上(运行压力比R22高约1.6倍) 洁净度要求: 杂质含量<3…

Qt QCustomPlot 绘制子轴

抄大神杰作&#xff1a;QCustomplot&#xff08;五&#xff09;QCPAxisRect进行子绘图-CSDN博客 需求来源&#xff1a;试验数据需要多轴对比。 实现多Y轴、单X轴、X轴是时间轴、X轴range联动、rect之间的间距是0&#xff0c;每个图上有legend(这里有个疑问&#xff0c;每添加…

tomcat与servlet

目录 一、Http服务器 二、tomcat 1、概念 2、tomcat解压缩文件 &#xff08;1&#xff09;bin文件夹 &#xff08;2&#xff09;conf文件夹 &#xff08;3&#xff09;logs &#xff08;4&#xff09;webapps 3、借助tomcat服务器访问网页 三、servlet 1、概念 2、s…

Bazel使用案例:构建Springboot工程

本文是关于如何使用Bazel搭建Springboot 3.1.0工程&#xff08;基于JDK17&#xff09;。为什么使用Bazel&#xff0c;而不是使用Maven或者Gradle&#xff1f;可以看我之前关于Bazel的介绍文章。 前期准备 在根目录加入.bazelversion文件&#xff0c;并加入6.2.0&#xff0c;指定…

异步编程(JS)

前言 想要学习Promise&#xff0c;我们首先要了解异步编程、回调函数、回调地狱三方面知识&#xff1a; 异步编程 异步编程技术使你的程序可以在执行一个可能长期运行的任务的同时继续对其他事件做出反应而不必等待任务完成。 与此同时&#xff0c;你的程序也将在任务完成后显示…