【发布时间】:2008-10-01 19:03:43
【问题描述】:
我总是喜欢问自己“这个的首要原则是什么?”在我学会了一些基本的东西(例如编程)之后。这是一个鼓舞人心的问题,IMO,它可以迫使你思考某事背后最重要的原则,尤其是编程等技能。
那么,您认为编程的首要原则是什么?稍后我会在下面给出答案。
【问题讨论】:
-
我们不谈论搏击俱乐部。
我总是喜欢问自己“这个的首要原则是什么?”在我学会了一些基本的东西(例如编程)之后。这是一个鼓舞人心的问题,IMO,它可以迫使你思考某事背后最重要的原则,尤其是编程等技能。
那么,您认为编程的首要原则是什么?稍后我会在下面给出答案。
【问题讨论】:
【讨论】:
编写代码,就像您必须维护该代码一样。
【讨论】:
尽量偷懒。
【讨论】:
禅,第一部分:编程只是路,不是路。
编程只是教计算机做什么的技术。要成功创建快速、可靠的软件,意味着了解您的算法、最佳实践以及与您的编程(语言)不一定相关的所有其他内容。
禅,第二部分:如果你赶时间,慢慢走。如果实在赶时间,就绕道而行。
听起来很傻,但不要让自己陷入妥协,这(真的)可能会在之后给你带来麻烦。我有一条规则:如果你是一个程序的核心,尽量做到精确和好。如果您正在使用软件深处的核心方法,请尝试加快编码速度。如果你在这两个之上进行编码,你甚至会变得更加草率。
设计错误是最难发现和/或修复的,下一步是每个人都依赖的部分中的编程错误,然后是“真正炫耀的软件部分”。如果您需要在项目结束时修复设计错误,嗯,那可不好... ;-)
禅,第三部分:知道你的路,尼奥。
了解您的环境、工具和您每天依赖的东西,并对其进行分类,使其适合您。如果你使用你的编程“环境”是最好的,你甚至不必去想它。如果你必须完成工作,不要介绍“花哨的新东西”,而是做好你的工作。这些东西可以在新项目中引入,即当你有时间准备和使用它时。
【讨论】:
KISS(保持简单,愚蠢)。
它确实提出了一个问题“你如何定义简单?”还有“什么时候对于手头的任务来说太简单了?”这就是为什么你不能仅仅知道编程的第一原则就成为一名优秀的程序员。
【讨论】:
过早的优化是 一切邪恶。 ——唐纳德·克努斯
【讨论】:
不要重新发明轮子。
【讨论】:
先搞清楚问题!
【讨论】:
YAGNI - You Ain't Gonna Need It。 YAGNI 背后的想法是针对您的需求进行编程,而不是针对潜在的功能。前提是,通过保持您需要编程的内容,您将(除其他外)减少代码膨胀,降低复杂性,避免功能蔓延,并减少对可以做什么(以及如何完成)的限制未来。
我想它与模块化设计协同工作:未来的功能可以在不重新设计现有代码的情况下进行扩充。
【讨论】:
知道什么时候不要编程。
【讨论】:
咖啡进,码出。
【讨论】:
如果没有经过测试,那就是坏了。
【讨论】:
有两种构建软件设计的方法: 一种方法是让它变得如此简单,以至于显然有 没有缺陷,另一种方法是做到这一点 复杂到没有明显的缺陷。 第一种方法要困难得多。
--查尔斯·安东尼·理查德·霍尔
【讨论】:
区分因果关系(使用计算机)
区分事实和观点(与人合作)
尽可能简单,但不简单(设计)
【讨论】:
编程是一种手段而不是目的。或者,“可以并不意味着应该”。
【讨论】:
【讨论】:
在我看来,最重要的原则是通过创建良好的抽象来降低复杂性。
这包括
还要确定停止创建抽象的点,并深入了解实现技术(例如数据库系统、编程语言)的基本属性,以防止产生可避免的额外复杂性。
【讨论】:
节目以观众为中心。因此,不要假设您编写的任何内容都不会被您或其他人阅读和维护。
由此得出的结论:通过很好地命名变量、函数和类来证明您理解要解决的问题!
【讨论】:
直到你在测试中展示它才起作用
【讨论】:
先思考,后编码。
你远没有你想象的那么聪明。问问题。学会珍惜你的同龄人。
调试时,第一个答案几乎总是错误的。
您为了抛弃而编写的代码往往会成为更大流程的基石。永远不要随意写任何东西。
【讨论】:
任何问题都可以通过另一层间接解决。
【讨论】:
了解你的工具。
【讨论】:
原则:软件就是知识获取。
后果:许多知识表示技术,都建立在抽象之上。为我们提供层、层、封装、关注点分离。
许多过程表示技术,均基于顺序、选择、重复。
【讨论】:
为下一个人编写代码。
【讨论】:
始终编写代码,就好像维护它的人是一个知道你住在哪里的精神病连环杀手
另外,永远不要认为你对编程无所不知,继续学习
【讨论】:
我是通过学习数字电子学进入编程领域的,所以我猜对我来说,基本的逻辑门(不是,和,或,异或,暗示)是编程的首要原则。
【讨论】:
一切都是为了用户。
【讨论】:
垃圾进 - 垃圾出 如果数据不好,你的用户界面有多好也没关系。
【讨论】:
DRY,几乎所有其他东西都是从它产生的。 KISS 是平衡行为的另一端,可确保您不会将软件优雅追求到疯狂的程度。
【讨论】:
从输出开始,向后工作。
【讨论】: