不要仅仅是复制粘贴代码

想要搞砸一些代码?那么你这么做:在弄懂它究竟是做什么之前快点修改它

如果是这样的话,你现在就是在练习一种叫cargo cult的编程----一种忽略一段代码如何工作和与其他相关代码的联系的方式

cargo cult很可能出现在这种场景:一个没有经验的程序员遇到问题时只会从其他地方复制一些代码过来,他只是知道一点或者完全不懂这段代码在做什么和放到其他地方后需要修改什么 ----引自wiki

 

当一个程序员复制一段他根本不懂的代码并希望将它用于解决问题的时候,他就是在联系cargo cult编程,这会增加不可预测的副作用的风险

 

当一个程序员阅读一段他不懂的代码并胡乱的修改它企图用于解决一些问题的时候,他也是在联系cargo cult编程


但在下面这种情况下,我们就不能说程序员只是单纯的复制代码了:复制一段代码,理解它,学习它,使用它,并只会有较低风险的副作用


cargo cult在某方面被人误解成一个从别人的代码那学习的基本验证步骤


下面有一些最有效的学习方法

    1.阅读一段代码

    2.知道这段代码使用的语言的所有特点

    3.知道这段代码使用的函数库或框架的所有特点

    4.学习那些函数库和框架的基本知识

    5.在这段代码范围内,明白每行代码在做什么和函数库和框架的目的


当一个人用一门新语言开始工作的时候,往往是很难的,因为有大量的信息需要人们去记住,还要高效的理解每一段代码的含义,这是很困难的,以至于很多时候马上就忘记了。不过,我们能做的就是利用大脑学习东西的方式--有意识的和无意识的(已经被证实)


“Blocked Practice”   这基本上就是说你学习的东西是通过一遍一遍的完成一个单一的技能,将它重复成你大脑里的一个键这样习得的

然而,这并不是最好的学习方式,事实证明,当你交叉对比同一项技能的不同变化的时候(原文:when you learn through interleaving different variations of the same skill),你能有效的学习到更多。




作为一个程序员,当我们在敲代码的时候,我们可以利用反复练习和交叉对比来练习编程能力,而不仅仅是复制粘贴


当我们复制粘贴一段代码的时候,我们只是看了一些而已(是否有时甚至都懒得看),根据上面那张图我们可以知道,我们可能只是消化了一些部分东西而已,因为它太抽象了。


相比而言,你手动的将这块代码敲进去能学习到更多,这会强迫你的大脑去思考这类代码模式的不同点,学习将会更高效。


命名是编程最难的方面之一,当我们没有理解的复制代码,我们运行时将是一个隐患,这个隐患是因为重写了变量名和函数名或类名而导致了破坏了一些东西的完整性。


如果我们能先理解代码,然后再将它写入我们自己的代码中,我们就能将它重新命名,让它适合用于我们的应用并且不会有命名冲突,尽管最后的结果可能和我们直接将代码粘上去的基本相同


另一方面,如果我们将从其他地方复制进来的代码复制到另一个地方,这将会是有可能发生的:复制了一些不必要的标记,或者忘了修改需要修改的标记


例如下面这个HTML的例子



当重复这段代码去创建一个新的输入的时候,我们很可能会忘了修改标签元素的属性,这将会破坏我们想创建一个新输入的动作




这个例子很有趣,因为它属于那种很难去测试的功能,(even with visual regression这句不会翻....),这非常依赖静态测试(就像代码检查,确保写的代码能达到预期的效果)


类似的事经常发生在测试中,当我们复制了一段已经通过测试了的代码,而不是重新写一份,我们运行的时候将会有因为没有修改必要的标记而导致测试失败的风险


不要仅仅是复制粘贴别人的代码,我们要学习别人的代码并且最大限度的实践它,这对学习你感兴趣的领域非常有帮助


总的来说,对于程序员来说,最有价值的是大脑,而不是手指。

智能网联汽车的安全员高级考试涉及多个方面的专业知识,包括但不限于自动驾驶技术原理、车辆传感器融合、网络安全防护以及法律法规等内容。以下是针对该主题的一些核心知识解析: ### 关于智能网联车安全员高级考试的核心内容 #### 1. 自动驾驶分级标准 国际自动机工程师学会(SAE International)定义了六个级别的自动驾驶等级,从L0到L5[^1]。其中,L3及以上级别需要安全员具备更高的应急处理能力。 #### 2. 车辆感知系统的组成与功能 智能网联车通常配备多种传感器,如激光雷达、毫米波雷达、摄像头和超声波传感器等。这些设备协同工作以实现环境感知、障碍物检测等功能[^2]。 #### 3. 数据通信与网络安全 智能网联车依赖V2X(Vehicle-to-Everything)技术进行数据交换,在此过程中需防范潜在的网络攻击风险,例如中间人攻击或恶意软件入侵[^3]。 #### 4. 法律法规要求 不同国家和地区对于无人驾驶测试及运营有着严格的规定,考生应熟悉当地交通法典中有关自动化驾驶部分的具体条款[^4]。 ```python # 示例代码:模拟简单决策逻辑 def decide_action(sensor_data): if sensor_data['obstacle'] and not sensor_data['emergency']: return 'slow_down' elif sensor_data['pedestrian_crossing']: return 'stop_and_yield' else: return 'continue_driving' example_input = {'obstacle': True, 'emergency': False, 'pedestrian_crossing': False} action = decide_action(example_input) print(f"Action to take: {action}") ``` 需要注意的是,“同学”作为特定平台上的学习资源名称,并不提供官方认证的标准答案集;建议通过正规渠道获取教材并参加培训课程来准备此类资格认证考试
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值