【发布时间】:2013-07-10 12:53:05
【问题描述】:
在编写程序时,作为一个业余程序员,我的理解是,可以通过三种方式来完成大部分事情:
- 创建循环
- 创建和使用函数
- 创建和使用对象
我在这里使用 javascript 来问我的问题,因为我大约在 2-3 周前开始学习它。与我在大学的 python 或 MatLab 中使用的相比,这有点奇怪,但这不是重点。我经常认为在三个特定应用程序中什么应该是好的选择,所以我想知道你的建议。
我想创建一个数组列表以供后续绘图使用。该程序应该采用方程的系数、增量步长和 x 值的边界。下面是代码(如果我在更改为适合 SO 时遗漏了下面的内容,很抱歉,但它在不久之前就可以工作了!):
function array_creator(input_coeff,inc, boundary){
var bound=boundary||[0,1];
var eqn_deg=input_coeff.length-1;
var increment=inc;
var x_init=bound[0];
var y_val=0;
var graph_array=[];
while (x_init<=bound[1]){
for(var i=0;i<input_coeff.length;i++){
y_val=y_val+input_coeff[i]*Math.pow(x_init,eqn_deg);
eqn_deg--;
}
new_arr=[x_init,y_val];
eqn_deg=input_coeff.length-1;
y_val=0;
graph_array.push(new_arr);
x_init=x_init+increment;
}
return graph_array;
}
在上面的代码中,我有一个嵌套循环,它在 while 内,但我习惯于编写嵌套深度超过 3-4 的代码,一周后我无法挖掘自己的程序。所以我的问题是,我什么时候应该知道是时候实现单独的函数而不是嵌套或知道创建对象的时间了。将一个大循环功能分解为多个功能在清晰度和效率方面的得失是什么?在什么时候创建对象变得至关重要,或者只是当我必须再次重用相同的代码时。
当你唯一的工具是锤子时,一切看起来都像钉子。当我在 MatLab 之后开始学习 python 时,我对 OO 方法印象深刻,以至于我习惯于在各种情况下创建类,无论是否需要。我认为许多 SO 新手会很高兴找到一些关于此编程基础的系统方法。
【问题讨论】:
-
所以这个问题即将以它是基于意见的论点结束......嗯......从什么时候开始良好的编程实践知识开始基于意见?
-
版主可能认为您的问题对于 StackOverflow 来说过于宽泛。预计人们提出的实际问题已经包括解决问题的尝试。也许您可以考虑修改您的问题?
-
@Jack_of_All_Trades “良好的编程实践”是一种观点,有些人不同意它们。 StackOverflow 通常适用于答案不是意见的问题。它要么有效且满足提问者的要求,要么无效且满足提问者的要求。诸如“此代码的哪个版本看起来更好?”之类的东西。或“我应该做 x 以使其更具可读性吗?”正在征求意见。然而,这并不是说你的问题不好问,只是 StackOverflow 可能不适合它。
标签: language-agnostic coding-style