.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

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

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

相关文章

Java当中用 javabean和其他容器存入表格数据 或 利用 容器进行存储表格

一:javabean 和list容器或map容器 package cn.wyj.two;import java.util.*;/*** javabean :必须有一个无参构造函数;变量属性私有化;* 本篇还是打印一张表* author 86155**/ public class Demo13_Javabean和其他容器 {public static void ma…

7-25 朋友圈 (25 分)(详解+并查集的了解和应用)

一:题目 某学校有N个学生,形成M个俱乐部。每个俱乐部里的学生有着一定相似的兴趣爱好,形成一个朋友圈。一个学生可以同时属于若干个不同的俱乐部。根据“我的朋友的朋友也是我的朋友”这个推论可以得出,如果A和B是朋友&#xff0…

使用Azure人脸API对图片进行人脸识别

人脸识别是人工智能机器学习比较成熟的一个领域。人脸识别已经应用到了很多生产场景。比如生物认证,人脸考勤,人流监控等场景。对于很多中小功能由于技术门槛问题很难自己实现人脸识别的算法。Azure人脸API对人脸识别机器学习算法进行封装提供REST API跟…

java while do循环_c语言中,while 和 do while 循环的主要区别是( )

1、循环构造的表达式不同:while循环构造的表达式为:while(表达式){循环体}。do-while循环构造表达式为:do{循环体;}while(条件表达);。2、执行末尾循环体的次…

Java当中 IO(File) 操作 之 递归打印子孙级目录和文件名称

一:上码 package com.wyj.one;import java.io.File;/*** 列出下一级:* 1, list(): 列出下一级名称* 2, listFiles():列出下一级File对象* 3, listRoots():列出盘符* author 86155**/ public class Demo8_列出下一级 {/*** p…

[NewLife.Net]单机400万长连接压力测试

目标对网络库NewLife.Net进行单机百万级长连接测试,并持续收发数据,检测网络库稳定性。【2020年8月1日晚上22点】先上源码:https://github.com/NewLifeX/NewLife.Net结论,8月1日晚达到200万,8月2日下午达到404万。上一…

JAVA开发需求分析套路_毕设做什么好?感觉都是套路了

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼在不考虑柯西序列的情况下:.1.00000000000000000……-0.9999999…….结果为 0.000…,也就是后面的 0 无限循环。这两个数目在这里是无限循环小数,小数点后五位之后还会一直填上 0,始终…

ABP快速开发一个.NET Core电商平台

总听.NETer羡慕Java有SSM框架,其实.NET也有ABP,极度优秀的开源应用程序框架,支持.NET Framework和.NET Core。羡慕Java有SpringCloud,其实.NET也有ABP.vNext,由ABP团队全新打造的.NET Core微服务架构开源框架&#xff…

Java当中 递归打印文件大小(面向不同的对象打印文件大小)

一:给固定的文件路径求文件大小 package com.wyj.one;import java.io.File;/*** 递归求出文件的大小* author 86155**/ public class CopyOfDemo10_递归打印子文件大小 {public static void main(String[] args) {File src new File("C:/Myjava/project12_IO…

java jlist 图标_java – 将图像添加到JList项目

您必须实现ListCellRenderer(或扩展DefaultListCellRenderer)并使用getListCellRendererComponent方法返回带有图标的Jlabel.例:public class IconListRenderer extends DefaultListCellRenderer {public Component getListCellRendererComponent(JList list, Objec…

Java当中编码和解码(以及出现乱编码的原因)

一:编码:字符串---->字节 package com.wyj.two;import java.io.UnsupportedEncodingException;/*** 编码:字符串-->字节* * * author 王永杰**/ public class Demo1_encode编码 {public static void main(String[] args) throws Unsup…

用了Dapper之后通篇还是SqlConnection,真的看不下去了

一:背景1. 讲故事前几天看公司一个新项目的底层使用了dapper,大家都知道dapper是一个非常强大的半自动化orm,帮程序员解决了繁琐的mapping问题,用起来非常爽,但我还是遇到了一件非常不爽的事情,如下代码所示&#xff1…

java swing 控件拖动_java swing中实现拖拽功能示例

java实现拖拽示例Swing中实现拖拽功能,代码很简单,都有注释,自己看,运行效果如下图:package com;import java.awt.*;import java.awt.datatransfer.DataFlavor;import java.awt.dnd.DnDConstants;import java.awt.dnd.…

7-26 Windows消息队列 (25 分)(详解+思路+超时解决)

一:题目 消息队列是Windows系统的基础。对于每个进程,系统维护一个消息队列。如果在进程中有特定事件发生,如点击鼠标、文字改变等,系统将把这个消息加到队列当中。同时,如果队列不是空的,这一进程循环地从…

一文说通C#中的异步编程补遗

前文写了关于C#中的异步编程。后台有无数人在讨论,很多人把异步和多线程混了。文章在这儿:一文说通C#中的异步编程所以,本文从体系的角度,再写一下这个异步编程。一、C#中的异步编程演变1. 异步编程模型这是C#中早期的异步模型&am…

java 视频监控 分屏ui_视频监控网页ActiveX视频分屏播放控件开发

最近在搞视频监控项目,需要在网页上显示实时视频,于是网上找了很多资料研究如何在网页上播放视频,一种实现方式就是开发activex控件嵌入到网页中。如下我将介绍如何开发一个可以分屏播放视频的activex控件 (部分内容也是从网上抄的&#xff0…

Java当中 文件得输入流 输出流

一:引言 InputStream 和 OutputStream 两个抽象类,我们主要用其实现类来操作 二:InputStream 输入流,从文件当中读数据到程序当中,我们要站在程序得角度上。 package com.wyj.two;import java.io.File; import jav…

基于.NetCore3.1系列 —— 日志记录之日志核心要素揭秘

前言在上一篇中,我们已经了解了内置系统的默认配置和自定义配置的方式,在学习了配置的基础上,我们进一步的对日志在程序中是如何使用的深入了解学习。所以在这一篇中,主要是对日志记录的核心机制进行学习说明。说明在上一篇中&…

array remove java_how to remove array from another array in javascript

可以将文章内容翻译成中文,广告屏蔽插件会导致该功能失效:问题:0: {id: 1553825061863, name: "Thai Milk Tea", qty: "1", total_amount: 9500, toppings: 500, …}1: {id: 1553825061863, name: "Thai Milk Tea", qty: "1", total_a…

Java 文件的拷贝

一:上码 package com.wyj.two;import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream;/*** 文件…