2010-05-11 30 views
0

我有一個數組,其中包含大約250個條目,每個條目都有自己的數組值。每個條目是一個地圖上的點,每個數組保存信息爲:編寫陣列的最佳做法

名, 另一個數組點這一點可以連接, 緯度, 經度,短的名字 , 一個布爾值, 而另一個布爾

的陣列已經寫在我的球隊另一位開發人員,他寫它是這樣:

names[0]=new Array; 
names[0][0]="Campus Ice Centre"; 
names[0][1]= new Array(0,1,2); 
names[0][2]=43.95081811364498; 
names[0][3]=-78.89848709106445; 
names[0][4]="CIC"; 
names[0][5]=false; 
names[0][6]=false; 

names[1]=new Array; 
names[1][0]="Shagwell's"; 
names[1][1]= new Array(0,1); 
names[1][2]=43.95090307839151; 
names[1][3]=-78.89815986156464; 
names[1][4]="shg"; 
names[1][5]=false; 
names[1][6]=false; 

在哪裏我可能會親自寫這樣的:

var names = [] 
    names[0] = new Array("Campus Ice Centre", new Array[0,1,2], 43.95081811364498, -78.89848709106445, "CIC", false, false); 
    names[1] = new Array("Shagwell's", new Array[0,1], 43.95090307839151, -78.89815986156464, 'shg", false, false); 

他們都完全正常工作,當然,但我想知道的是:

1)沒有一個會比其他更長的時間來實際處理? 2)我是否錯誤地認爲我的版本的同一事物的緊湊性有好處?

我只是有點擔心他的3000行代碼與我的3-400獲得相同的結果。

在此先感謝您的任何指導。

回答

6

你真正想在這裏做的是定義一個自定義數據類型,它更準確地表示你的數據。我不知道你正在使用所以這裏的語言是一些僞代碼:

class Location 
{ 
    double latitude; 
    double longitude; 
    String Name; 
    String Abbreviation; 
    bool flag1;//you should use a better name 
    bool flag2; 
} 

然後,你可以創建一個數組來保存所有對象的位置,這將是更具可讀性和可維護性。

Locations = new Array; 
Locations[0] = new Location("Shagwell's",...); 
.... 

===編輯===

因爲你說你正在使用JavaScript那麼最好的做法很可能是存儲在一個JSON文本文件的數據,這有消除數據的好處從代碼文件中獲取,並且如果要進行更改,則可以使用非常容易編輯的數據源。

您的JSON文件看起來像這樣

[{"lat":"23.2323", "long":"-72.3", "name":"Shagwell's" ...}, 
{"lat":"26.2323", "long":"-77.3", "name":"loc2" ...}, 
...] 

然後,您可以存儲在您的網絡服務器的入店地方JSON文本說「data.json」,那麼,如果你正在使用jQuery的你可以加載它通過做這樣的事情:

$.getJSON("data.json", function(data) { //do something with the data}); 
+0

+1此外,標準做法是將數據從源代碼中分離出來,以便在數據更改時不必重新編譯程序。我想,一個XML文件在這裏很適合你。 – Segfault 2010-05-12 00:01:08

+0

同意,如果數據是固定的,他可能希望將其存儲在簡單的文本文件或數據庫中 – 2010-05-12 00:02:09

+0

我們正在使用JavaScript和Google Maps API。 – Douglas 2010-05-12 00:04:21

1

結構化的數據,就像你的例子,你和你的同事都是相對「錯誤的」。從外觀的角度來看,你應該已經實現了一系列結構,當然假設你所呈現的數據是真正無序的,我可能會猜測它可能不是。數組經常使用,因爲它們是我們學習的第一個數據結構,但通常不是最好的選擇。

就性能而言,更常見的是數據訪問代碼,而不是數據類型本身。坦率地說,除非你處理巨大的數據集或字面上的實時應用程序,否則性能應該不成問題。

至於你發佈的兩個例子,編譯完成後,它們將幾乎完全相同。

0

我個人覺得前者更具可讀性。從性能角度來看,差異可能很小。

0

拋開其他答案放在一邊(儘管我同意其他人的觀點,你需要在這裏結構),你的同事的方式似乎對我更好。像Serapth所說,編譯器會優化差異,原始代碼具有更好的可讀性。