惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Recorded Future
Recorded Future
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Forbes - Security
Forbes - Security
N
News and Events Feed by Topic
SecWiki News
SecWiki News
T
The Exploit Database - CXSecurity.com
S
Security @ Cisco Blogs
H
Heimdal Security Blog
Security Latest
Security Latest
T
Threatpost
V2EX - 技术
V2EX - 技术
C
Cybersecurity and Infrastructure Security Agency CISA
GbyAI
GbyAI
The Last Watchdog
The Last Watchdog
Recent Announcements
Recent Announcements
P
Privacy International News Feed
K
Kaspersky official blog
P
Proofpoint News Feed
L
LangChain Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Security Archives - TechRepublic
Security Archives - TechRepublic
T
Threat Research - Cisco Blogs
博客园_首页
T
Tor Project blog
M
MIT News - Artificial intelligence
The Hacker News
The Hacker News
The GitHub Blog
The GitHub Blog
月光博客
月光博客
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
F
Full Disclosure
MyScale Blog
MyScale Blog
The Register - Security
The Register - Security
Engineering at Meta
Engineering at Meta
Y
Y Combinator Blog
Cyberwarzone
Cyberwarzone
L
LINUX DO - 最新话题
量子位
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
O
OpenAI News
T
The Blog of Author Tim Ferriss
S
Schneier on Security
小众软件
小众软件
The Cloudflare Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Know Your Adversary
Know Your Adversary
Microsoft Security Blog
Microsoft Security Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
L
Lohrmann on Cybersecurity
Vercel News
Vercel News

博客园 - 荣-

学习实践:使用模式,原则实现一个C++自动化测试程序 学习实践:使用模式,原则实现一个C++数据库访问类 C++字符转换等常用方法 DLL内存管理模板类 字符串处理代码(国际化转换C++版) 我的C++数据库访问库--临界区处理类 我的C++数据库访问库 批处理文件的学习 C++中,以类成员函数指针作为参数对std::map中的元素进行迭代处理 取得MySQL数据库表,列信息的SQL语句 我的我的C#数据库操作类(与大家交流) ACE项目的重构整理 安装SQL Server 2000和sp补丁时,安装程序提示"以前的某个程序安装已在安装计算机上创建挂起的文件操作。运行安装程序之前必须重新启动计算机"。 我的计算机安装步骤 创建oracle用户 我的重构步骤 我的C++代码检查列表 PowerDesigner高级应用 文档的阅读
如何设计类
荣- · 2008-08-08 · via 博客园 - 荣-

在工作中,我们经常用到类,怎么写好类呢?这个问题我思考了很久。

如果想写好类,最好是站在类的使用者的角度上来看待类。我们既是类的实现者,也是类的使用者,所以这应该不难。

类有这样几个使用者:
1:类的调用者
2:类的维护者
3:类的阅读者

站在这些使用者的角度上看,什么样的类是好的类呢?
1:低扇入:调用的其他类很少
  如果类调用的其他类越少,使用起来越方便,以为不用担心会受到其他类的影响。
而且如果哪一天我们想把该类拷贝到其他地方用时,也不用再继续拷贝其他类才能使当前类运转起来。
3:接口简洁
一个类,提供的外部可见成员越少越好。一个有3个函数的类和一个有30个函数类给人的感觉就不一样,让人觉得有3个函数的类简单,好用,有30个函数的则相反。
2:封装好:
把private函数写成public类型的,会增加函数的数量。

4:函数参数少
一个函数有5,6个参数,用的时候需要照顾参数的顺序,理解每个参数的含义,让人觉得这个函数很麻烦,很容易就把参数的顺序搞错了,或把第n个参数的含义和第n+1个函数的意义给搞混了。

5:参数多的函数,对参数进行结构化
如果某个函数有多余6个的参数,则最好把它写成结构。例如调用某添加函数,拿职工来说吧,有部门、性别,姓名,工号...,在某个函数中,把这些信息用参数传进去很麻烦,但是把这些信息写成一个职工对象,添加的时候,传一个职工对象进去,则就方便多了,看起来也清爽啊,不会弄混参数的顺序和参数的含义。

6:函数的调用与调用顺序无关。
在调用函数A之前,必须调用函数B,在调用函数B之前,必须调用函数C,这是不是很让人郁闷啊。
命名调用函数A,就必须知道B,C是干什么的。让人觉得不爽。

7:注释明白,完整
如果我是个看代码的,我觉得一行行看代码很累,往往要阅读很多的代码,才知道这个类,这个函数是干什么的,他们之间是如何跳转的。他们所隐含的含义往往需要猜测。
为了看代码人着想,我们在每个类的头部,大体描述一下我们怎么想的,怎么构思的这个类。
给每个变量,函数添加上正确的注释,是一件有功德的事情。

8:高扇出:将会被用在很多地方
写同一段代码,使用的次数,地方越多,越有成就感。
需要修改时,只修改这一个地方,就能对很多地方产生影响,多爽啊。