拿什么拯救你,小趴菜程序员!

1,093 阅读7分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第3天,点击查看活动详情

当今社会的发展 对于 程序猿的要求也越来越高 不再仅仅是需要 身强力壮的搬砖工 企业更喜欢的是内功深厚的高手大神。

那么我们要如何从一个 外家高手 向着 一个 内功高手 转型呢 在这里稍微谈一谈我个人对于这个问题的一些理解。

我们先来谈谈 普通的 外家高手 和 内家高手的 几个区别。

动图


1, 无法理解代码程序的执行过程

大部分的 码农 只能知道程序的运行结果 对于程序的运行过程 每一行代码 在 整个代码中的作用 都理解的不到位

这就好像是我们平时遛狗 一种是 撒开了 狗绳 让 狗自己跑 我们最后知道 狗子拉了屎 撒了尿 跑了步 玩了球 最后我们再拴上狗绳 把狗领回家就行了

这样的遛狗方式 你虽然知道狗子都干了什么 但是 在哪儿拉的屎 在哪儿撒的尿 跑了多远的路 跟谁玩了球 你都不知道

我们应该 跟着狗一起跑一次 知道我们的狗子都在什么时间什么地方干了什么 就好像程序执行 我们要跟着程序跑一遍 了解程序执行的每一个步骤

那么不理解代码执行过程 会造成那些危害呢 ? 常见的问题有

(1) "巫毒代码"

无效的但是不影响程序执行的代码 例如 无效的输出 用不上的函数调用 获取不想管的数据 等等 这些 "巫毒代码"虽然不影响程序的运行 但是都会是程序的安全隐患 说不定什么时候就会爆发

(2) "溜溜球代码"

就好像溜溜球一样 转呀转 最后的罪行结果和最初始的状态是一样的 比如 获取的字符串 然后 字符串大小写吧 字符串循环吧 字符串分割吧 一顿操作 最后一个步骤 是 再拼接成原来的字符串 看似做了很多起始什么都没做

  1. "推土机代码"

看似是将一个大型的代码合理化的分割成了不同功能的多个代码块 但是因为 耦合度太高 或者其他的有些问题 导致分割的小模块工作不正常 或者 根本就不能一起执行

那么补救方法是什么呢

我们还是要提高自身修为 我们可以使用浏览器提供的"打断点"功能 将 前端程序一步一步的执行 这样的话整个程序执行时 每一个步骤程序的怎么运行的都会非常的清晰 你将鼠标放在变量上 还可以显示 当前状态下 变量储存的数据 让你对整个程序的执行过程理解的更加清晰

R-C (1).gif

2,无法理解面向对象编程

所谓的面向对象编程 是 一种比较抽象的编程的方式 但是在大型项目中 面向对象编程是必须要掌握的编程模式 面向对象编程的很多特性都非常适用于大型项目 很多程序员适应了面向过程的编程方式 就 完全不能理解面向对象的编程方式是怎么回事 甚至觉得面向对象编程更繁琐 在编程会对面向对象编程有抵触的心里

这就好像是我们要做饭 正常人的心态都是 我自己洗菜切菜炒菜 然后根据自己的口味去炒菜做饭 面向对象编程 更像是 我们去点了一家外卖 大家就会担心 这个炒菜的过程我也看不到 怎么他就给我整出来一盘菜了 这菜怎么炒的 干净不干净 能不能吃 总有刁民想害朕 可别再给我下了毒 谋害了朕

其实如果我们真的了解的面向对象编程 就会发现面向对象的好处 等你体会到了外卖的好处 你就会天天沉浸与外卖的海洋 一家一家的吃过去 横扫周围的大小餐馆

那么不理解面向对象编程都有那么危害呢? 常见的有

(1) 看见面相对象就抵触 非要用 自己的方式来解决 然后还美其名曰 自己的方法更简单更高效

(2) 没有创建实例化对象 就想要调用数据 不理解为什么非要 new一下子

(3) 完全不理解 为什么非要有个this 这个是啥 我就直接调用属性 为啥要加个this

(4) 对于 面向对象的高级应用更是两眼一抹黑 感觉自己在 被 各种类 各种操作 给包围了 他们都在嘲笑你 鄙视你

R-C (2).gif

那我们要怎么办呢

没有什么好的办法了 只能从 什么是对象 一点一点 脚踏实地的去补知识点了 把 什么是对象 什么是构造函数 什么是实例化对象 什么是this指向 这些问题都一个一个 搞明白 最后就是实际项目中 面向对象的高级应用 面向对象的编程语法 是我们 实际工作中必须要掌握的技术栈 就好像一个不会做饭的你 如果不学会怎么点外卖 就要饿死一样

R-C (3).gif

3, 对框架不了解 不了解框架的特点

我们在实际工作中都是通过框架语法来解决问题 那么对于一个框架的语法特点 内置函数 等等这些 我们都必须要完全的理解 这样的话 可以大量节省我们实际工作的代码量 和 我们的工作效率 说白了就是 你自己写了半天的代码 人家就 1行2行 就搞定了 然后对方以一种看傻子的眼神看着你 仿佛在说 这小子彪呼呼的 还真写出来了

那不了解框架 带来的危害都有哪些呢?常见的有

(1) 自己编写大量繁重冗余的代码 来实现框架中已经定义好的功能 不是直接调用框架中已经定义好的 内置函数等

(2) 自己重复定义 函数中已经定义好的 内置函数 还觉得自己提升了整个框架的逼格

(3) 使用一些已经过时的技术 拒绝使用更新更简单的代码来实现功能

(4) 尝试使用自己的掌握的知识体系来解决一切问题 而不是学习新技术来解决遇到的问题

解决方案是什么呢

我们要让自己慢下来 不要每天都是拼命的完成需求 解决bug 我们需要冷静下来 需要要慢慢的丰富自己的知识点 最好可以购买一两本儿工具书 或者是专门的网站 在工作的时候可以即时的提供相应的参考

\

4, 不理解递归

递归的语法非常容易理解 但是递归程序的执行 就不太好理解了 想想不出来一个语法这么简单的函数会得出来这么复杂的结果 因此很多人在设计一个递归函数的时候 往往就会遇到困难

对于这些递归程序大家的不理解 一般表现在

(1) 对于一些略显复杂的迭代计算 不知道如何通过递归来解决 例如 循环遍历操作

(2) 递归函数在 递归调用前 和 递归调用后 都判断相同的条件

(3) 递归函数不设定 终止条件

(4) 不理解递归函数 每次要传什么参数 或者 不知道什么要传参

解决方案是什么呢

很简单 战胜恐惧的最好方法就是直面恐惧 我们战胜 递归的最好方法 就是直面递归 通过更多的定义递归 练习使用递归来解决问题 这样在多多练习的基础上 我们才能真正的掌握递归

最后希望大家都 都能早日突破自我 早日 修炼出身后内里 三花聚顶五气朝元 白日飞升 直接升级成大神一样的存在

20152912444829607.gif