g****t 发帖数: 31659 | 1 请教各位老师一个问题。
我经常这样写动态数组。
就是用函数里面new一个varizble size的数组,然后函数return数组。
这样写的优点是各种语言都可以一样写。
这种写法各位认为有什么缺点吗?
double y[];
double x[] = f(n);
y = f(n);
In another file:
public static double []f(int n){
double [] result = new double [n];
return result;
} |
h**c 发帖数: 1979 | 2 不oop,应该写一个支持generic的arrayFactory |
g****t 发帖数: 31659 | 3 Oop寰堥洠瀵嚭鍙互姗熸鍖栫殑缈昏鎴愬垾鐨勮獮瑷殑浠g⒓鍚э紵鐣剁劧
涔熷彲鑳芥槸鎴戞按骞充笉澶犮
鎴戠敤鍑芥暩澶氫簺涓昏鏄鎱悇绋獮瑷皪鍑芥暩鐨勫畾缇╅潪甯搁浼笺
銆鍦hnpc(鐖辨厱鎷嗚吇瀛愷焽焽仇焽) 鐨勫ぇ浣滀腑鎻愬埌: 銆br />
: 涓
峯op锛屽簲璇ュ啓涓釜鏀寔generic鐨刟rrayFactory
|
z****n 发帖数: 3189 | 4 有动态数组长度的需求,为啥不用arraylist
感觉你这样写特别容易越界,就是写着写着忘记这个数组到底是多长的 |
c*******v 发帖数: 2599 | 5 你是指语法越界吧?这个确实时有发生。但是编译会给提示,所以不会出现运行时的微
妙bug。我不在细节部分引入oo相关的东西,主要是考虑到oo在各种不同语言的差别很
大。我这样写,可以机械化的,基本上bug free的翻译成其他语言。
ArrayList高维很麻烦(也可能是我经验不够)。另外无法翻译成别的语言,所以不考
虑。
【在 z****n 的大作中提到】 : 有动态数组长度的需求,为啥不用arraylist : 感觉你这样写特别容易越界,就是写着写着忘记这个数组到底是多长的
|
z****n 发帖数: 3189 | 6 那这样,还是c++爽,一个指针完事。。
【在 c*******v 的大作中提到】 : 你是指语法越界吧?这个确实时有发生。但是编译会给提示,所以不会出现运行时的微 : 妙bug。我不在细节部分引入oo相关的东西,主要是考虑到oo在各种不同语言的差别很 : 大。我这样写,可以机械化的,基本上bug free的翻译成其他语言。 : ArrayList高维很麻烦(也可能是我经验不够)。另外无法翻译成别的语言,所以不考 : 虑。
|
c*******v 发帖数: 2599 | 7 除了函数和定长数组,for loop。还有哪一段语法在不同语言里(c plus plus,java
,go,c sharp,swift)
的定义比较类似,大多数情况下可以比较容易的互相翻译?给个建议?
【在 z****n 的大作中提到】 : 那这样,还是c++爽,一个指针完事。。
|
z***t 发帖数: 10817 | |
c*******v 发帖数: 2599 | 9 那本书的作者在前言讲了。不适合extreme programming。
另外我将来会把一些程序放在很小的芯片上。
能够比较容易,稳定,无大错的,翻译成C,rust,go..这样的small size程序
是硬需求。
【在 z***t 的大作中提到】 : 你不是也买本书 effective java
|
w**z 发帖数: 8232 | 10 你是马甲?
:那本书的作者在前言讲了。不适合extreme programming。
:另外我将来会把一些程序放在很小的芯片上。 |
|
|
g****t 发帖数: 31659 | 11 是的。不可能是最后一个知道的。
: 你是马甲?
: :那本书的作者在前言讲了。不适合extreme programming。
: :另外我将来会把一些程序放在很小的芯片上。
【在 w**z 的大作中提到】 : 你是马甲? : : :那本书的作者在前言讲了。不适合extreme programming。 : :另外我将来会把一些程序放在很小的芯片上。
|
a****i 发帖数: 1182 | 12 为什么需要 f(n)这么个东西只是为了 new一个array?
各种语言一样写是一个缺点,而不是优点吧
【在 g****t 的大作中提到】 : 请教各位老师一个问题。 : 我经常这样写动态数组。 : 就是用函数里面new一个varizble size的数组,然后函数return数组。 : 这样写的优点是各种语言都可以一样写。 : 这种写法各位认为有什么缺点吗? : double y[]; : double x[] = f(n); : y = f(n); : In another file: : public static double []f(int n){
|
c*******v 发帖数: 2599 | 13 (1)
a[0]这样的表达式,可以是一个数,也可以是一个二维数组的第一维也就是一个
reference,出问题很难检查。
写数组代码我尽可能每次赋值前都先new。避免reference进来。
(rust现在据说是语言自带one time assignment功能,还是很实用的。)
(2)
多语言一样写是个要求。假如你用java写了个bisection的程序,50行。找个人重写下
js一上午就可以完成。如果用多语言接口互相调用反而麻烦。将来用的包改了什么的,
还得维护.
【在 a****i 的大作中提到】 : 为什么需要 f(n)这么个东西只是为了 new一个array? : 各种语言一样写是一个缺点,而不是优点吧
|
a****i 发帖数: 1182 | 14 a[0]是一张还是一个数不是在你 double a[]的时候就确定了吗?
如果是一维的话,那就该是 double a[][]
java到js好说,到python怎么办?
我的感觉,用另一个语言重写,也比翻译容易
【在 c*******v 的大作中提到】 : (1) : a[0]这样的表达式,可以是一个数,也可以是一个二维数组的第一维也就是一个 : reference,出问题很难检查。 : 写数组代码我尽可能每次赋值前都先new。避免reference进来。 : (rust现在据说是语言自带one time assignment功能,还是很实用的。) : (2) : 多语言一样写是个要求。假如你用java写了个bisection的程序,50行。找个人重写下 : js一上午就可以完成。如果用多语言接口互相调用反而麻烦。将来用的包改了什么的, : 还得维护.
|
c*******v 发帖数: 2599 | 15 You can try to write the bisection solution and then draw the conclusion.
【在 a****i 的大作中提到】 : a[0]是一张还是一个数不是在你 double a[]的时候就确定了吗? : 如果是一维的话,那就该是 double a[][] : java到js好说,到python怎么办? : 我的感觉,用另一个语言重写,也比翻译容易
|