Tujuan dari proyek ini adalah menganalisis data saham perusahaan energi ramah lingkungan pada tahun 2017 dan 2018. Kami menghitung jumlah total volume harian setiap tahun dan keuntungan tahunan untuk setiap simbol ticker.
Secara keseluruhan, kinerja stok energi ramah lingkungan ini jauh lebih baik pada tahun 2017 dibandingkan tahun 2018, kecuali TerraForm Power (simbol ticker TERP) seperti yang dapat Anda lihat dari data di bawah.
Skrip yang difaktorkan ulang menjalankan subrutin dalam 0,55 detik dan 0,57 detik masing-masing untuk tahun 2017 dan 2018. Ini merupakan peningkatan kecil pada 0,64 detik dan 0,67 detik untuk skrip asli, tangkapan layar disediakan di bawah.
Perbedaan utama antara kedua metode yang digunakan untuk menghasilkan data yang sama adalah metode penyimpanan datanya. Dalam subrutin asli, sel-sel di lembar kerja diperbarui dengan setiap iterasi perulangan for, mirip dengan kode di bawah ini.
For i in tickers
...
Worksheets("AllStocksAnalysis").Activate
Cells(4 + i, 1).Value = ticker
Cells(4 + i, 2).Value = totalVolume
Cells(4 + i, 3).Value = endingPrice / startingPrice - 1
...
End i
Skrip untuk metode yang difaktorkan ulang menyimpan data keluaran perulangan dalam tiga larik data, yang kemudian digunakan untuk memperbarui lembar kerja dengan data setelah perulangan akuisisi data dijalankan, mirip dengan kode di bawah ini.
Dim tickerVolumes(12) As Long
Dim tickerStartingPrices(12) As Single
Dim tickerEndingPrices(12) As Single
...
'For loops populating arrays
...
For i = 0 To 11
Worksheets("All Stocks Analysis").Activate
Cells(4 + i, 1).Value = tickers(i)
Cells(4 + i, 2).Value = tickerVolumes(i)
Cells(4 + i, 3).Value = tickerEndingPrices(i) / tickerStartingPrices(i) - 1
End i
Manipulasi ini mungkin terlihat sepele, namun hal ini memotong kira-kira sepersepuluh detik waktu berjalan untuk setiap subrutin.
Kode refactoring mungkin memiliki kelebihan atau kekurangan tergantung pada situasinya. Dalam kasus apa pun, jika kode asli tidak cukup dikomentari, atau tujuan dari kode tersebut adalah sesuatu yang tidak terlalu dipahami oleh seseorang, akan sangat sulit untuk melakukan refaktorisasi karena seseorang mungkin tidak memiliki pengetahuan yang cukup tentang metode pengkodean atau tujuannya. dari kode.
Jika kode tidak dikomentari secara memadai, mungkin akan sangat sulit bagi seseorang untuk mengetahui tujuan dari setiap pernyataan dan fungsi. Hal ini akan membuat kode menjadi sangat sulit untuk difaktorkan ulang.
Jika tujuan kode adalah sesuatu yang belum diketahui, akan sulit untuk memfaktorkan ulang kode tanpa mengetahui tujuan akhirnya. Ambil contoh simulasi elektrodinamik nanopartikel semikonduktor logam menggunakan Generalized Multiparticle Mie Theory. Lihat masalahnya? Tidak peduli seberapa bagus seseorang dalam memperlengkapi ulang kode, subjek ini memerlukan pengetahuan tingkat lanjut tentang elektrodinamika dan persamaan diferensial parsial tingkat lanjut.
Selain itu, memfaktorkan ulang kode bisa menjadi pekerjaan yang berat dengan sedikit imbalan. Ambil contoh analisis saham kami dengan VBA. Jika kumpulan data yang sedang dikerjakan tetap berada pada urutan besaran yang kita manipulasi di sini, memperlengkapi ulang kode agar dapat berjalan 0,1 detik lebih cepat mungkin bukan sesuatu yang menarik bagi kita. Namun, jika kita menganalisis sektor saham yang lebih besar kinerja pasar atau dana lindung nilai, perlengkapan ulang ini bisa sangat berharga ketika kode mulai membutuhkan waktu tiga puluh menit atau lebih untuk dieksekusi.
Kode refactoring juga memiliki banyak keuntungan. Secara umum, pemfaktoran ulang kode sering kali membuat kode menjadi lebih elegan, efisien, dan terkadang lebih mudah dipahami.
Jika seseorang dapat memanipulasi kode sedemikian rupa sehingga tujuan yang sama dapat dicapai dengan lebih sedikit baris dan fungsi yang lebih kuat, kode tersebut secara umum akan lebih mudah dipahami dan kemungkinan besar akan dieksekusi lebih cepat juga.
Selain itu, pemfaktoran ulang kode memberikan pemahaman yang lebih mendalam tentang tujuan awal kode tersebut dan bagaimana tujuan akhirnya dicapai. Saat memfaktorkan ulang kode, kita dapat melihat kembali skrip dan memutuskan apa yang dilakukan setiap pernyataan dan apakah atau bagaimana kode dapat dibuat lebih efisien. Peningkatan pengetahuan tentang kode ini kemungkinan besar berarti bahwa komentar seseorang pada kode yang telah difaktorkan ulang akan lebih berguna dan deskriptif untuk kedua kalinya.
Keuntungan paling nyata dari skrip VBA kami yang telah difaktorkan ulang adalah waktu prosesnya. Seperti yang dinyatakan sebelumnya, skrip yang difaktorkan ulang berjalan sekitar sepersepuluh detik lebih cepat daripada skrip aslinya.
Skrip kami yang telah difaktorkan ulang juga berisi komentar yang jauh lebih baik sehingga kami dapat melihat kembali kodenya nanti dan memahami skrip yang telah difaktorkan ulang jauh lebih baik daripada kami memahami skrip aslinya.
Selain itu, skrip kami yang telah difaktorkan ulang berisi makro satu-subrutin-melakukan-semuanya, sedangkan skrip asli menyelesaikan tugas yang sama dengan beberapa subrutin.
Terakhir, skrip yang difaktorkan ulang adalah skrip yang dapat lebih mudah dimodifikasi untuk melakukan tugas serupa pada analisis lainnya. Data disimpan dalam array di makro itu sendiri daripada mengisi sel di lembar kerja saat loop berjalan. Jika kami ingin memperlengkapi kembali skrip asli untuk tujuan lain, kami hampir harus menulis ulang loop sepenuhnya. Jika kita ingin memperlengkapi kembali skrip yang telah difaktorkan ulang untuk tujuan lain, kita hanya perlu mengedit array dan menggunakan fungsi pencarian dan penggantian untuk memperbarui nama array di loop.