先思再行 闭着眼睛编程

摘要:解决问题最重要的习惯不是一直盯着屏幕和编写修改代码,某些时候,阻止你成功的东西恰恰会是过于努力。这时候你需要暂停一下,平缓你的思绪,换一种方法或许能带给你不一样的效果。

你会花多少时间思考如何编写代码?

乍看这是一个引人思考的深层次问题,在编程专业中常有这样的误解,软件开发就是写代码。软件开发实为一门艺术,而代码仅仅是通往艺术之门的工具。好比燃料和画布是画家的工具一样,代码的目的是实现某种策略和思路。对程序员来说,他的目标是开发出完整的软件系统,按照需求完成各个功能模块或许是某种无形的思路、特性。比如一个深思熟虑的架构、明确的内部组织和代码质量,最后将这些进行整合。画家每隔一小段时间会停下来重新评估进展和绘画,看看是否达到自己的要求,程序员也一样,必须定期审查代码、查看进展、检查思路是否实现。

那么你平时是如何工作的呢?是否确定工作区后就埋头苦干?什么都无法阻止你的前进呢?如果这个描述很适合你,那么你做的一切都有可能是错的。

所有好的软件都有共同之处——他们都设计精良。同样,大多数失败的案例也会有相同之处——缺乏结构和视觉上的盛宴,最终导致崩溃。软件开发是一项智力活动,这一切都归结于实现的结构和在混乱中找到开发软件的最佳理念。

我做过一个非常有趣的观察。在我第一年的编程生涯中,我设法在规定的时间里开发出大量的代码。结果大多数代码都需要重新开发、设计甚至是丢弃。速度提高了,而效率却明显下降了,欲速则不达。随着的时间推移,我学会一小步一小步前进,在开发前进行仔细分析思考,然后再开始开发编码。结果发现代码生成速度下降了好几倍,而成功率几乎达到100%,是不是有点戏剧性。我越来越多采用这种策略进行编程,我没有坚持把时间直接转换成代码量。事实上,我经常每天只写几行代码甚至有些时候会再删除几行。反而让我的代码从整体上更加简洁、效率更高。

许多程序员都体验过这种黑暗感觉,当你看到许多大大小小的缺陷都掺杂在一起的那种混乱,当走到这一步再回头重新修改设计代码,你会意识到为时已晚并且是毫无意义的,因为你继续下去的工作本质上已经是被丢弃的。

对此,你还能做什么?

事实上,你可以!学会把更多的时间用来思考并且减少代码输入。我发现长时间的盯着屏幕并不会帮助你找到解决问题的方式。当思绪被卡住的时候,我会放弃继续工作,离开电脑和所思考的问题。当我漫步在公园和一些安静的场所时,常常会想到一些非常棒的思路和理念。实际上你可以试着闭着眼睛编程,灯光和周围的一切都不会影响到你,片刻的休息会给你带来轰动的、突破性的思路。 我最喜欢的地方是浴室,它可以让人放松和平静下来,听到照亮内心的那些非常安静的想法和灵感。

解决问题最重要的习惯不是一直盯着屏幕和编写修改代码,某些时候,阻止你成功的东西恰恰会是过于努力。这时候你需要暂停一下,平缓你的思绪,换一种方法或许能带给你不一样的效果。


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

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

相关文章

javaScript复习

ES6字符串方法: //console.log(String.prototype);var str "abcdefabc";//console.log(str.includes("a"));//结果true//console.log(str.includes("abf"));//结果false//console.log(str.startsWith("d"));//false//cons…

STS的安装教程-鹏鹏

STS全称Spring Tools Suite。 简介:Spring Tools Suite (STS)其实就是一个被包装过的Eclipse,主要用于快速的开发Spring项目,我们不用再去编辑繁琐的xml配置文件,而是由工具自动生成。STS有两种安装方式,一种是直接在E…

final的用法

final 根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类、非抽象类成员方法和变量。你可能出于两种理解而需要阻止改变:设计或效率。 final类不能被继承,没有子类,f…

爱恨交织的编程语言 是什么吸引了你

摘要:每门编程语言都有自身独特的地方,那么为什么有些语言会一直存活在我们周围,而有些语言却逐渐被人淡忘,是什么吸引你? 每名程序员至少知道两门以上的编程语言,有些甚至不是所谓的编程语言(比…

Unable to parse the date: 2017-12-30 日期格式转化失败

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 报错如题, 日期格式转化失败。 原因:参数是2017-09-23 这种格式,代码却是写的转为: &qu…

linux逻辑卷管理

2019独角兽企业重金招聘Python工程师标准>>> 摘要: Linux用户安装Linux操作系统时遇到的一个最常见的难以决定的问题就是如何正确地给评估各分区大小,以分配合适的硬盘空间。而遇到出现某个分区空间耗尽时,解决的方法通常是使用符…

[LeedCode]921. 使括号有效的最少添加

题目描述: 给定一个由 ( 和 ) 括号组成的字符串 S,我们需要添加最少的括号( ( 或是 ),可以在任何位置),以使得到的括号字符串有效。从形式上讲,只有满足下面几点之一,括号字符串才是…

abstract的一些用法

abstract(抽象)修饰符,可以修饰类和方法 1,abstract修饰类,会使这个类成为一个抽象类,这个类将不能生成对象实例,但可以做为对象变量声明的类型,也就是编译…

github 如何设置项目的语言显示

github 会根据一个项目文件最多的那个种类的文件显示为对应的语言项目 如果想让整个项目显示为 HTML 项目, 需要进行以下步骤的设置 1.在根目录下创建一个文件 .gitattributescreate .gitattributes2.在 .gitattributes 内编辑以下内容: *.js linguist-languageHTML…

C++提高进阶,你知道多少?

C从零开始 ——何谓编程 引言 曾经有些人问我问题,问得都是一些很基础的问题,但这些人却已经能使用VC编一个对话框界面来进行必要的操作或者是文档/视界面来实时接收端口数据并动态显示曲线(还使用了多线程技术),却连…

POJ 3352 Road Construction ; POJ 3177 Redundant Paths (双联通)

这两题好像是一样的,就是3177要去掉重边。 但是为什么要去重边呢??????我认为如果有重边的话,应该也要考虑在内才是。 这两题我用了求割边,在去掉割边,用DFS缩…

postman界面变成了左右结构怎么办

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 在左上角 file -- settongs中设置一下:

面向对象阶段个人总结

面向对象阶段的个人总结 我个人对面相对向的总结。我想到了我认为比较好的方法,就是对照每次学习一个大模块的前的章节目录进行回顾总结,比如我们这阶段学习是面向对象的课程,下面我就来按照章节 目录进行一个系统…

1.springboot:入门程序

一、Spring Boot 简介 官网英文: Spring Boot makes it easy to create stand-alone, production-grade Spring based Applications that you can “just run”. We take an opinionated view of the Spring platform and third-party libraries so you can get st…

2018.12.18运算符,分支结构(循环),异常处理,函数

1复习 <!DOCTYPE html><html><head> <meta charset"UTF-8"> <title>复习预习</title> <style> .b { /* 作用域: {}产生的, {作用域开始的标识, }作用域结束的标识 */ /*出现在作用域中的所有内…

javax.ws.rs.NotSupportedException: Cannot consume content type

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 报错如题&#xff1a;javax.ws.rs.NotSupportedException: Cannot consume content type 解决&#xff1a;使用postman发送 post 请求访…

java异常预习

java中的异常捕获结构有try&#xff0c;catch&#xff0c;finally三部分组成。其中&#xff0c;try语句块存放的是可能发生异常的java语句&#xff1b;catch程序块在try语句块之后&#xff0c;用来激发被捕获的异常&#xff1b;finally语句块是异常处理结构的最后执行部分&…

【亲测有效】Kali Linux无法安装网易云音乐的解决方案

问题描述 由于 Kali Linux 的内核是基于 Debian 的&#xff0c;我们在安装网易云音乐的时候更偏向于选择安装网易云音乐 v1.1.0 deepin15&#xff08;64位&#xff09; 的包&#xff0c;可是我发现在安装过程中&#xff0c;无法定位 libqcef1 软件包&#xff0c;对于很多钟爱网…

C/C++函数名修饰约定

函数名字修饰&#xff08;Decorated Name&#xff09;方式 函数的名字修饰&#xff08;Decorated Name&#xff09;就是编译器在编译期间创建的一个字符串&#xff0c;用来指明函数的定义或原型。 正在装载数据…… LINK程序或其他工具有时需要指定函数的名字修饰来定位函数的…

设计模式中类之间的关系

设计模式 个人感觉设计模式是程序员的核心技能 &#xff0c;然后看了一些设计模式的书&#xff0c;都是讲设计模式的一些理论&#xff0c;放在实现上都有点模糊&#xff0c;后来图书馆看到一本《设计模式的艺术》&#xff0c;感觉很不错&#xff0c;有一些比较具体且容易理解的…