.NET开发者提高编程技能的5种方法

.NET开发者提高编程技能的5种方法

https://insights.dice.com/2017/08/29/5-ways-improve-programming-skills/

即使拥有40年的编程经验,我唯一能确定的就是肯定有比我更好的程序员。但是我并没有放弃,我会继续尝试并提高自己的编程技能。

我认为有五件事可以帮助任何人成为更好的程序员。有些是我个人的经验,有的则是我从网上和其他程序员那里学到的方法。

查找适合您的学习方法

我们每个人都以不同的方式学习。例如,我不是视频学习的忠实拥护者,而是宁愿从书本或网站上学习。而且我敢肯定我并不孤单:对于许多人来说,一段30分钟的视频(甚至更长)太慢了。这就是为什么YouTube上一些最受欢迎的编程视频往往很短的原因-在许多情况下,时间在5到12分钟之间。

如果您在学习视频方面遇到困难,建议您去上学,阅读。回到我刚开始的时候,编译器附带了广泛的纸质手册,您可以从头到尾阅读。现在所有软件文档似乎都在线上,您可以按照自己的进度阅读。

如果您不是被动学习的爱好者(无论是基于视频还是基于文本),那么还有另一种可行的方法:编写比赛代码。您不必取胜,但是将自己的技能与其他人置于快节奏的环境中通常会教给您一些新的技巧。而且,如果您确实赢了-嘿,通常会有现金奖。Project Euler[2],TopCoder[3],Coderbyte[4]等几个网站都可以挑战您。

无论选择哪种教育方式,都要确保离开舒适区。您需要投入未知才能成为更好的程序员。即使您有多年的经验,仍然有很多东西要学习。

简化您的代码

只要有问题的代码写得好并且易于遵循,阅读其他人生成的代码就很有见识。如果您在编写和维护代码时遇到麻烦,检查有经验的程序员如何处理类似的任务是挑选一些指针的好方法。通常,您会发现这些专业人士尽可能地简化了他们的代码。

这是我多年来积累的一些简化技巧:

删除明显的复制和粘贴代码。如果您在不同的地方看到相同的代码,则很可能成为类中的函数或方法的候选者。

将大型代码块拆分为较小的代码块。同样,您可以将这些巨大的块简化为函数或方法,即使它们仅被调用一次:具有有意义名称的代码块也更易于遵循。您并非总是能够将代码简化为单一功能,但这是您可以追求的目标。

使用重构工具使变量名更具描述性。另外,添加有意义的注释。从简单的函数开始,以便您可以理解它们,并力求在每个函数,类和方法的顶部至少有一行注释。

学习不同的编程语言

同样,作为一名程序员而提高意味着要超越自己的舒适区。例如,如果您了解面向对象的语言,请尝试一种功能性的语言。对于C#,显而易见的功能语言是F#。同样,如果您仅编程桌面应用程序,请尝试学习移动或Web开发[5];如果您知道C#,则可以将Xamarin用于移动开发[6],也可以将ASP.NET MVC用于Web。我知道台式机C#和Xamarin,但不了解ASP.NET MVC,我最近开始学习在线课程。

尽管它可能对您的编程无济于事,但我鼓励Windows开发人员学习如何使用Linux[7]。您可以将其安装在旧PC或Windows机器上;如果要对网站进行编程,请尝试在Linux[8]上设置Apache Web服务器。

学习新编程语言的首选方法是转换现有的实用程序或小型程序。因为您已经知道它的作用以及它的工作方式,并且获得了输出或测试结果,所以使用新语言确实可以简化学习过程。例如,我通过获取现有Z80编辑器/汇编器的源代码并从中编写6502交叉汇编器来学习Z80汇编器编程。我没有调试器,这可能有点极端,但是它对我有用。

探索不同的做事方式

这可能是这五件事中最难做到的。遇到编程问题时,我的直觉总是锁定解决问题的特定方式。但是通常有更多的方法可以解决它。一旦用通常的方法解决了问题,就可以通过更快或更节省内存的方法来重做舒适区。起初可能会令人沮丧,但它可能使您成为功能更丰富的程序员。

在调试器中单步执行代码

您可能会认为所有程序员都这样做;但是在我的职业生涯中,我遇到了至少两个没有这么做的人,他们留下了一个漏洞被客户发现。(“生产测试”,我曾听说过这种说法,但这并不是对职业的友好举动。)如果您确信自己的软件没有错误,那么可以采用著名计算机科学家Donald Knuth[9]的方法:他将奖励支票邮寄给发现自己编写的软件有错误的任何人。

不愿意冒险吗?单步执行代码。您将对正在发生的事情有一个更好的了解,确定自己思维中的薄弱环节,并在下次构建类似的软件时学习做什么(或不做什么)。

结论

我会练习这些技巧吗?多半是对的。正如任何程序员所知道的那样,当您忙于工作时,很难找到学习和成长的时间。尽管如此,重要的是要保留时间尝试新事物。尽可能地保持技能的磨练不仅是保留您的工作,而且还可以完成您实际想要做的项目的最佳方法。

References

[1] David Bolton: https://insights.dice.com/author/dhbolton/
[2] Project Euler: https://projecteuler.net/
[3] TopCoder: https://www.topcoder.com/challenges/?pageIndex=1
[4] Coderbyte: https://coderbyte.com/
[5] Web开发: https://www.dice.com/jobs/q-Web+development-jobs
[6] 移动开发: https://www.dice.com/jobs/q-Mobile+development-jobs
[7] Linux: https://www.dice.com/jobs/q-Linux+Administrator-jobs
[8] Linux: https://www.dice.com/jobs/q-Linux+Administrator-jobs
[9] Donald Knuth: https://en.wikipedia.org/wiki/Knuth_reward_check

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
语言规范 C# Language Specification 1.2(C#语言规范1.2).doc C# Language Specification 2.0(C#语言规范2.0).doc 源码教程 ASP.NET编程技术与交互式网页设计 asp.net亲密接触_带源码 C#学习 01_类.htm.txt 02_构造函数的执行序列.htm.txt 03_抽象类和接口.htm.txt 04_结构类型.htm.txt 05_类成员的定义.htm.txt 06_类成员的其他议题.htm.txt 07_接口的执行.htm.txt 08_集合.htm.txt 09_运算符重载.htm.txt 10_阴影和深度复制.htm.txt 11_事件基础.htm.txt 12_事件进阶.htm.txt 13_读写Txt文件.htm.txt 14_StatusBar控件.htm.txt 15_自定义控件.htm.txt 16_使用打开保存文件对话框.htm.txt 17_图形绘制基础.htm.txt 18_图形绘制进阶-线条、字体.htm.txt 19_图形绘制进阶-图像(双倍缓冲).htm.txt 20_Windows应用程序安装部署概念.htm.txt 21_使用文件基础.htm.txt 22_使用文件高级.htm.txt 23_串行化和并行化.htm.txt 技术资料 ACCESS数据库操作类.txt ASP.NET常用代码.txt asp.net常用函数表.txt Asp.net的身份验证.txt ASP导出Excel数据的四方法.txt C#调用存储过程.txt CheckBox控件.txt datagrid排序_选择_分页.txt DataSet对象.txt DotNET WinForm FAQ 16个.txt excel打印.txt EXCEL导出.txt EXCEL中合并单元格.txt mail.txt NET在RichTextBox控件加入图片(类似QQ).txt send.txt SQL储存过程等的解密.txt VisualC#打造“浏览器”.txt vs2005常用快捷键.txt webcontrol和pagelet.txt win2003中配置msdtc.txt word导出.txt 保证应用程序只有一个实例运行.txt 编辑字段中的word文件.txt 编码标准.txt 播放声音.txt 捕捉DataGrid的双击事件(C#版本).txt 不显示窗口后台运行程序.txt 储存过程.txt 处理“进程性能计数器被禁用”的错误.txt 串口操作.txt 打开word文件.txt 打造“浏览器”.txt 带图标和自定义颜色的ListBox.txt 得到当前数据库中所有用户表信息.txt 读取、设置系统时间日期.txt 读写注册表.txt 对过程进行加密.txt 二进制数据保存.txt 二进制数据字段的更新.txt 分页及动态创建列的控件 .txt 改变Windows服务的启动顺序.txt 各进制之间的转换.txt 给图片添加版权信息.txt 关于拖放操作.txt 关于在WinForm里用HttpWebRequest获得某个页面,并填写页面的textbox及点击button的方法.txt 画带阴影效果的文字.txt 环境信息.txt 获得光标在多行textbox中的行与列的函数.txt 计算控件中文字所占的宽度.txt 加半透明图片水印.txt 将控件放到datagrid中以及修改列宽.txt 截取系统消息.txt 解决VS.NET使用中属性框不显示的问题.txt 里的InputBox.txt 模拟鼠标和键盘操作.txt 取CPU的序列号.txt 如何:在VisualC#.NET中建立一个平滑的进度条.txt 如何得到网卡号.txt 如何调用WindowsAPI的要点.txt 如何控制输入法.txt 如何利用GDI作图解决异或问题.txt 如何取硬件标志.txt 如何让应用程序只有一个实例运行.txt 如何如何插入照片到Excel.txt 如何识别键盘左右的shift,Ctrl或Alt键.txt 如何水晶按钮的程序生成.txt 如何为DataGrid添加下拉列表框.txt 如何用C#在Excel中生成图表?.txt 如何用程序实现键盘和鼠标的模拟?.txt 如何与资源管理器互动剪切、拷贝、粘贴文件.txt 深入理解C#编程中的组件-事件-委托.txt 生成透明的GIF图片 .txt 生成压缩图片时的2方法.txt 使用C#返回系统特殊路径.txt 使用VisualC#.NET检查Windows版本.txt 使用Win32和其他库.txt 使用自己画的光标.txt 数据绑定.txt 水晶报表使用winform.txt 水印.txt 特殊文件夹路径.txt 同一解决方案中一个项目的xml注释在另一个项目中不能智能提示显示这些注释的解决方法.txt 图像读取.txt 无标题窗口的拖放.txt 下面的5行代码完成了从局域网中找出所有的机器.txt 显示DataGrid序号的一个适用的方法.txt 用C#快速往Excel写数据.txt 用C#来捕获屏幕.txt 用C#做ScreenSaver.txt 用imgscan.ocx来扫描图像.txt 用word填充表格.txt 用户登录组合控件.txt 在.NET中得到计算机硬件信息的一些功能.txt 在MapX中响应滚轮放大缩小地图.txt 在两个ASP.NET页面之间传递值.txt 在如何利用SharpZipLib进行文件的压缩和解压缩.txt 怎样打开关闭CDROM.txt 怎样检测网络中的电脑是否有安装SQL2000.txt 怎样写一个存储过程类来实现如何对存储过程的调用?.txt 直接拉入图片文件到程序窗口中打开.txt 指定Web服务器运行的不是ASP.NET1.1版.txt 字符串加密.txt 字幕显示屏幕保护.txt 自己动手用c#写控件.txt C#试题 简答题.txt 填空题.txt 问答题1.txt 问答题2.txt 选择题.txt 综合题.txt 辅助软件 aspx/asp代码生成器

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值