轻松写意程序人生

优快云第一期总结之三:Thread的问题 C#是一门支持多线程的语言,因此线程的使用也是比较常见的。由于线程的知识在Win32编程的时候已经说得过多,所以在.Net中很少介绍这部分(可能.Net不觉得这部分是它所特有的)。 那么线程相关的问题大致有如下四类(这篇文章只讨论单线程、单线程与UI线程这两方面的问题)。问题一,线程的基本操作,例如:暂停、继续、停止等;问题二,如何向线程传递参数或者从中得到其返回值;问题三,如 阅读详情

现在越来越多的人从事编程工作,但是并不是所有的人都能对其编程工作处理得得心应手。那么,如何能在工作当中更好的处理这些编程相关的工作呢,则需要一定的技巧,而这些技巧的掌握与否,可能直接关系到你工作的轻松度。

 

首先,我们从程序员日常的工作说起,大致的工作分如下几点:

1.  编写程序代码;

2.  进行相关的程序设计;

3.  程序调试;

4.  程序维护;

5.  编写程序文档;

6.  阅读其他人的程序文档;

7.  学习新的技术资料。

 

而在这些工作当中,让程序员经常头疼的又是哪些呢,恐怕是:

l         程序调试,尤其当程序出现莫名其妙错误的时候;

l         程序的变动,即程序维护;

l         阅读其他人的程序或文档,特别是当这些程序或文档的可读性差的时候。

 

那么作为一个程序员,面对日常这些工作,如果想轻松应对的话,恐怕最希望得到的是如下几点:

l         程序代码编写得越少越好;

l         进行程序调试的时候,能更容检查出来;

l         程序能方便的进行修改和扩展;

l         团队之间方便合作和交流。

 

不难看出,如果想自己的程序人生变得十分写意的话,就尽量解决让我们头疼的事,以及更方便获得我们所希望得到的。那么如何才能实现我们的目的呢。

 

首先,为了能让大家更清楚地意识到,我首先用一个表格来说明一下软件开发周期。

程序设计

编码

测试

维护

      

很明显,维护阶段时间最长,其次是程序设计和测试,最后才是编码。然而对于程序员来说,在每个工作阶段中的工作时间和工作量之间对比又是不同的,大致如下:

 

程序设计

编码

测试

维护

工作时间

较短

最短

较短

最长

工作量

较少

最多

较少

较少

 

大家可以很清楚地看到,对程序员来说,在编码阶段工作时间最短,然而其阶段的工作量却是最多的,那么如何把这个阶段处理得当则至关重要。接下来,就具体说明的几点技巧。

 

首当其冲的是,要选择一个好的开发语言以及开发工具。俗话说:“工欲善其事,必先利其器”。作为一个编程人员,如果没有个好的工具,试问怎么能干好本职工作。这一点,我就不再详细说明了。

 

其次在做程序设计的时候,不要仅仅考虑稍后的编码,而要全局考虑。正如孙膑所说“胜兵:先胜而后求战;败兵:先战而后求胜”。推广到我们在做程序设计的时候,不要仅仅为了编码而去设计,而要考虑现在软件项目的需求变动很大,以及今后的扩展性等等。否则,当需求发生变动的时候,你不得不再重新设计一边,然后再把编码、测试这些过程再走一遍,岂不得不偿失。因此,我们宁可在前期设计的时候考虑的问题多些,工作做细些,也不要到头来做重复工作。

 

再着就是,每个程序员要建立自己的代码库,如果是团队的话,要建立团队的代码库。大多的程序员很少建立自己的代码库,每个项目完成后也不整理自己写过的代码,这样下来,以前积累的经验就浪费了。再写一个新程序的时候,又去重新编写。试想一下,这样不是在做重复工作,既浪费了时间降低了效率,又增加工作的枯燥性。其实这样的习惯不好,最好是自己建立一个的代码库,每当项目完成后,整理自己写过的代码,把某些比较好的程序部分,抽出来填充自己的代码库,以便下次使用。

 

最后要提的一点,也是大家经常忽略的一点,就是代码规范。很多人一提到这一点,都会点头认可,但是真正到自己写程序的时候,却往往忘了这一点。在此,我要强调的是,养成好的编码习惯,因为大家都讨厌读一些可读性很差的代码。例如:我几年前的一个同事,他在编写代码的时候,竟然用拼音字符来作为变量名,造成每个变量名长达二三十个字符,当他请我帮他解决问题的时候,我一看他的代码就头晕了。希望能用这个例子能让大家牢记这一点。

 

以上就是我所介绍的几点技巧。其实,我们也看到了,程序设计的好坏直接影响到整个软件开发过程,也是重中之重。如何能做好程序设计呢。在我看来,首先就是对一个大的系统要进行分层;其次,对每个小的系统要进行封装独立化。这也就是为什么现在经常讲的三层或两层架构,以及什么OO编程等等。而当你在设计的时候使用这些方法或思路,你就会发现,这些方法和我前面讲的技巧是完全对应的。所以如果你能真正体会并应用上面所说的几点,我相信你的程序人生一定会变得轻松愉快!

 

 

《Effective C#》Item 17:减少装箱(Boxing)和拆箱(Unboxing)操作 为了便于文章的开展,首先介绍装箱(Boxing)和拆箱(Unboxing)这两个名词。.Net的类型分为两种,一种是值类型,另一种是引用类型。这两个类型的本质区别,值类型数据是分配在栈中,而引用类型数据分配在堆上。那么如果要把一个值类型数据放到堆上,就需要装箱操作;反之,把一个放在堆上的值类型数据取出来,则需要进行拆箱操作。 例如,对于如下简单的装箱和拆箱操作语句。    int i 阅读详情

相关推荐

优快云第一期总结之四:Stream的问题

IO操作基本上需要用到Stream相关的子类,因此这类问题在优快云问得也是比较多。其实对于Stream来说,操作起来比较简单,只要对细节的处理稍微注意一下,相信在使用它的时候也会得心应手。 对于Stream相关的问题,大致分如下几类。问题一,基本操作的问题;问题二,编码的问题;问题三,尾部处理问题;问题四,Stream缓存问题;问题五,资源释放问题;最后一个问题,

愚翁专栏 1万+

轻松写意程序人生 [转]

现在越来越多的人从事编程工作,但是并不是所有的人都能对其编程工作处理得得心应手。那么,如何能在工作当中更好的处理这些编程相关的工作呢,则需要一定的技巧,而这些技巧的掌握与否,可能直接关系到你工作的轻松度。   首先,我们从程序员日常的工作说起,大致的工作分如下几点: 1.  编写程序代码; 2.  进行相关的程序设计; 3.  程序调试; 4.  程序维护; 5.  编写程序文档...

weixin_34037515的博客 134

优快云第一期总结之二:ADO.NET + DataGrid的问题

现在写程序要完全不沾数据库的边恐怕很难,那么用C#写程序也是一样,会经常遇到数据库方面的问题。在C#中操作数据库是使用ADO.Net来完成,而显示数据这一方面常常要用到的是DataGrid这个组件,因此这两个问题也是论坛中问得最多的。 对于ADO.Net来说,涉及的问题大致分为如下几类:第一类,数据库的连接问题;第二类,数据库操作方面的问题,查询、更新等等;第三类,对数据集的操

愚翁专栏 1万+

倾斜水印_写意花鸟画色彩技法详解:冲熨法、水印法

......写意花鸟画色彩技法详解:冲熨法、水印法冲熨法在宣纸上先用墨彩点写、泼洒,也叮以趁湿往上边再喷水或点水,水量要适当,然后把纸倾斜,使颜色顺着水流淌下来,形成一些意外的自然肌理。如果颜色的量不够或需要丰富和调整的,可以再增补颜色,再用喷水器喷上适量的水,以冲破颜色。画者觉得冲色效果比较理想时,用电熨斗加热,或用吹风机将颜色固定在纸面。观自在菩萨,行深般若波罗每年花开时节,我邀约朋...

weixin_33973421的博客 181

《Effective C#》Item 21:用委托实现回调

委托属于C#中的新名词,它的应用也非常广泛,例如事件就是委托最简单而又直接的例子。 那么首先说说什么是委托,其实委托在用过C或者C++的人看来就是函数指针,不过使用C#的大多数人都没有用过这两门语言,因此对委托的理解不是很深,对于委托可以简单的从字面去理解,即“委托别人去执行某些操作”,也就是说执行一个操作,而这个操作过程自身并不知道,只是委托过来让你去执行而已。参看如下这个例子。

愚翁专栏 1万+

《Effective C#》Item 16:尽量减少垃圾产生的数量

对于.Net所写一般程序来说,都属于托管程序,内存的释放和回收是由Garbage Collector完成。但是相对于栈上内存操作而言,GC回收堆上的内存,会消耗更多的CPU时间,这方面的内容可以参看这篇文章。http://blog.youkuaiyun.com/knight94/archive/2006/08/05/1023352.aspx 因此如果让GC不停的释放和回收内存,会造成程序性能的下降

愚翁专栏 1万+

无与伦“笔” 写意无限 三星 GALAXY 开启 Note 时代

全球移动通信终端市场领导厂商三星电子在上海世博中心发布跨界旗舰智能机 GALAXY Note。集智能手机便携性、平板电脑宽广视界和不同移动终端核心功能于一身的 GALAXY Note 开创了智能终端产品新品类。三星电子移动通信业务部总裁兼负责人申宗钧、三星电子大中华区总裁金荣夏、两岸三地数百位媒体代表以及全国各地经销商齐聚发布会现场,共同“开启 NOTE 时代”!       三星电子移

SMI2010的专栏 3447

NET 实战:30 天搞定企业级 Web 订餐系统(附完整源码 + 数据库设计)

订餐流程:浏览菜品 → 选择菜品及数量 → 填写送餐地址 → 提交订单 → 数据库记录核心代码(绑定菜品列表):vb' 绑定菜单表到DataGrid控件,展示菜品信息user id=sa;' 查询菜品名称、价格、口味Dim adpt1 As New SqlDataAdapter("select cdishid,vdishname 菜品名称,cdishrate 价格,vdishdescription 口味 from dish", conn)End Sub用户体验优化。

m0_67740236的博客 1517

OSChina 周五乱弹 ——程序猿到底算不算歧视

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34354173的博客 785

SQL手工注入及sqlmap注入(文章管理系统实例练习)

sql手工注入及sqlmap注入练习

weixin_53303754的博客 522

Linux蓝牙开发实战:5分钟搞懂BlueZ与D-Bus通信原理(附D-Feet调试技巧)

本文深入解析Linux下BlueZ蓝牙协议栈与D-Bus通信的核心机制,提供实战开发指南。通过D-Bus对象模型、信号订阅等关键技术点的详细讲解,配合D-Feet工具的高效调试技巧,帮助开发者快速掌握蓝牙设备管理与性能优化方法,提升物联网开发效率。

3a9bq4r8t2y的博客 327

优快云第一期总结之一:Form问题

Form问题是最基本的问题,因为编写WinApp程序首先接触的对象就是它,因此在论坛中对它而产生的问题也最常见。 与Form相关的常见问题大致分为如下的四类问题。第一类问题:如何控制窗体的显示顺序;第二类问题:窗体之间的对象如何相互引用或操作;第三类问题:如何处理窗体唯一性问题;最后一个问题:如何合理的关闭窗体或程序。 接下来先说说如何控制窗体的显示顺序。很多编

愚翁专栏 3万+

腾讯文档API逆向分析:不用Selenium也能批量导出的黑科技

本文揭秘了如何通过Python逆向分析腾讯文档的隐藏API,实现无需Selenium即可批量导出在线表格的高效方法。详细解析了API调用流程、Cookie维护及异常处理技巧,相比传统方案性能提升显著,适用于大量文档导出的自动化场景。

h9j8k7l6m5n的博客 1201

浅谈C#托管程序中的资源释放问题

终于开始动手写这篇文章了,有个网友催了我好几次,今天终于可以静下心来完成它。 便于对文章的开展,需要先明确两个概念。第一个就是很多人用.Net写程序,会谈到托管这个概念。那么.Net所指的资源托管到底是什么意思,是相对于所有资源,还是只限于某一方面资源?很多人对此不是很了解,其实.Net所指的托管只是针对内存这一个方面,并不是对于所有的资源;因此对于Stream,数据库的连接,GDI+

愚翁专栏 2万+

【FPGA】DDR3调试总结

DDR3管脚根据不同的功能可以分为:数据组、地址组、控制组和电源组。如图上所示,共96个管脚。

m0_51679724的博客 4965

SAP MM自动化进阶:STO交货单自动创建的配置与优化

本文深入解析了SAP MM模块中实现公司间库存调拨订单(STO)交货单自动创建的完整配置流程与优化策略。通过激活自动交货与绑定发货点两大核心配置,打通自动化链路。重点探讨了如何集成ATP可用性检查以智能处理库存不足等异常场景,确保自动化流程的可靠性与业务贴合度,并提供了进阶监控与问题排查方法,助力企业显著提升供应链效率。

weixin_29206669的博客 124

《Effective C#》Item 1:用属性来访问类的私有成员

在程序中,难免要访问某个对象的私有成员。那么以前实现这类功能的方法有两种,第一种方法最简单,就是把成员访问符从“private”改为“public”即可;而另一个就是提供公有的成员访问函数来进行访问。那么现在用C#编写程序,就不再需要采用前面所说的两种方法了,而直接使用属性来完成。 首先来看看三种方法的如何实现以及调用的,这里用一个例子来说明,即访问“EmployeeInfo”类的私有成员

愚翁专栏 1万+

Isaac Gym摄像头数据获取全攻略:从CPU到GPU,教你实时显示RGB与深度图

本文详细介绍了在Isaac Gym中获取摄像头数据的两种高效方案:CPU模式与GPU张量模式。通过实战代码示例,展示了从摄像头配置、数据获取到实时可视化RGB与深度图的全流程,帮助开发者优化机器人仿真与计算机视觉应用的性能。特别强调了GPU模式下的零拷贝访问与张量运算优势,适用于需要低延迟处理的场景。

weixin_29056701的博客 387

《Effective C#》Item 18:Dispose函数的标准实现模式

对于托管程序来说,非托管资源来说,需要手动来释放,否则会造成资源泄漏,如果放到析构函数去完成,但是GC调用对象的析构函数时机并不确定,对于资源释放并不及时。换句话说析构函数只是保障资源不被泄漏的方法,但不是最好的方法。比较好的方法,就是使用.Net的IDisposable接口提供的Dispose方法来进行释放。对于程序资源释放,可以参看这篇文章。http://blog.youkuaiyun.com/k

愚翁专栏 1万+

第十六篇:Camx IFE 、OPE 各 port口功能定义

需要注意的是,类似 CSLTFEPortIdRawDump 是没有downscale功能的,所以如果遇到fov不正确的问题,可以排除下TFE这边的 output port是否被接到了 CSLTFEPortIdRawDump 上面来。我们知道Camx 的IFE 、OPE有不少的output port,各个port是有哪些功能的呢?老一点的框架平台,采用的TEF、OPE。

231

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

《Effective C#》Item 20:区分接口实现与虚函数重载

本文的英文标题为“Distinguish Between Implementing Interfaces and Overriding Virtual Functions”,但是文章的内容主要涉及的是如何在多层继承中使用接口,因此觉得文章标题和内容有些不符(也许我水平比较低,无法真正理解文章的内容)。 众所周知,在一个类中对接口所定义方法的实现,默认是不会加上“virtual”关键字的。

愚翁专栏 1万+

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

《Effective C#》Item 15:利用using和try-finally来释放资源

我以前写过一篇文章,关于.Net资源释放问题,也就是对于非内存的资源,最好使用IDisposable接口提供的Dispose来释放,详情参看这篇文章。http://blog.youkuaiyun.com/knight94/archive/2006/08/05/1023352.aspx 很明显,Dispose方法是一个外部方法,系统并不会帮你调用。为了尽早释放对象所占用的资源,所以需要保证Dispo

愚翁专栏 1万+

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

《Effective C#》Item 12:推荐使用成员初始化语句

为了方便内容的开展,先说说一个对象的构造过程。对于类型第一个实例的构造过程大致如下:1. 分配静态成员的内存空间,此时空间存储数据为0;2. 执行静态成员的初始化语句;3. 执行基类的静态构造函数;4. 执行类型的静态构造函数;5. 分配成员的内存空间,此时空间存储数据为0;6. 执行成员的初始化语句;7. 执行相应的基类构造函数;8. 执行类型的构造函数。

愚翁专栏 9596

《Effective C#》Item 14:使用构造函数初始化语句

在写程序的时候,往往会出现为一个类型提供不同场景的构造函数,可能大多构造函数比较相似,而C#中又不允许缺省参数,因此构造函数的编写无疑是一个重复工作。但是使用Copy和Paste来完成构造函数的编写,有时候很难达到统一,尤其是当成员发生变化的时候。因此比较常见的替换方法就是为构造函数提供一个统一的成员函数来完成初始化工作。例如:    public class MyClass    {

愚翁专栏 9114

《Effective C#》Item 9:区别和认识四个判等函数

.Net有四个判等函数?不少人看到这个标题,会对此感到怀疑。事实上确是如此,.Net提供了ReferenceEquals、静态Equals,具体类型的Equals以及==操作符这四个判等函数。但是这四个函数之间有细微的关系,改变其中一个函数的实现会影响到其他函数的操作结果。 首先要说的是Object.ReferenceEquals和Object.Equals这两个静态函数,对于它们俩来说,

愚翁专栏 9109
上一篇: 如何把网络共享目录映射为本地驱动器
下一篇: 如何在程序中互斥的操作数据库
Knight94
博客等级 码龄25年 1013粉丝 87原创
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值