Saya telah menjalankan kode (kode baru) yang menggunakan apa yang saya sebut 'Array Paralel' atau Daftar. Berarti ada 2 array yang berisi data terkait dan dihubungkan oleh posisi mereka (indeks) dalam array.
Saya menganggap ini membingungkan dan rentan terhadap segala macam kesalahan. Solusi yang biasanya saya usulkan adalah membuat objek yang disebut Company
dengan bidang CompanyId dan CompanyName.
Contoh yang sangat nyata:
List<string> companyNames;
List<int> companyIds;
//...They get populated somewhere and we then process
for(var i=0; i<companyNames.Count; i++)
{
UpdateCompanyName(companyIds[i],companyNames[i]);
}
Apakah array paralel ini dianggap praktik buruk ?
Jawaban:
Berikut adalah beberapa alasan mengapa seseorang mungkin menggunakan array parrel:
Saya tidak melihat alasan kuat untuk melakukan ini dalam kasus ini ... dan ada kemungkinan pilihan yang lebih baik di semua di atas atau tidak begitu berguna dalam bahasa tingkat tinggi.
sumber
Saya bersalah menggunakan array paralel . Kadang-kadang Anda masuk ke dalam struktur begitu banyak sehingga Anda tidak ingin berpikir tentang cara abstrak itu. Abstraksi bisa sedikit lebih sulit untuk refactor sehingga Anda enggan untuk memulai sampai Anda telah membuktikan apa yang benar-benar Anda butuhkan.
Pada titik itu, ada baiknya mempertimbangkan refactoring untuk meringkas detailnya. Seringkali alasan terbesar saya enggan melakukannya ternyata adalah sulit untuk memikirkan nama yang baik.
Jika Anda dapat melihat cara yang baik untuk abstrak array paralel pergi lakukan setiap waktu. Tetapi jangan melumpuhkan diri Anda dengan menolak untuk menyentuh mereka. Terkadang sedikit kode kotor adalah batu loncatan terbaik ke kode hebat.
sumber
Pola ini kadang-kadang juga disebut Struktur Array (bukan Array of Structures), dan sangat berguna ketika membuat vektor kode. Daripada menulis perhitungan yang berjalan pada struktur tunggal dan membuat vektor bit-bitnya, Anda menulis perhitungan seperti biasanya, kecuali dengan SSE intrinsik sehingga beroperasi pada 4 struktur, bukan satu. Ini biasanya lebih mudah, dan hampir selalu lebih cepat. Format SoA membuat ini sangat alami. Ini juga meningkatkan penyelarasan, yang membuat operasi memori SSE lebih cepat.
sumber