1. Pembicaraan orang tua
Delphi VS VC sudah menjadi topik yang sangat lama, tapi saya masih ingin membicarakannya di sini. Itu semua pendapat saya.
Keunggulan RAD mudah dilihat. Dari segi desain antarmuka, Delphi sebenarnya lebih baik dari VC. Saya ingin menulis tombol transparan yang tidak biasa. Di Delphi, saya hanya perlu mencari kontrol, klik mouse, dan memodifikasi Caption. Dibutuhkan setidaknya 10 baris kode untuk menyelesaikannya. Tentu saja, pendekatan MFC membuat orang memahami prinsip-prinsip dasar Windows, namun enkapsulasi OOP tidak tercermin dengan baik. Pengembang perlu memahami semua prinsip dasar sebelum mereka dapat menulis kode . Bagi saya dan sebagian besar Menjadi pemula adalah sebuah siksaan karena tidak perlu Ya, tenggat waktu pengembangan selalu ketat dan waktu tidak pernah cukup. Kita tidak bisa mengharapkan programmer mengetahui semua aspek pemrograman Windows. Beberapa orang tahu banyak tentang video dan ada pula yang pandai dalam jaringan, namun tidak ada seorang pun yang serba bisa dan baik dalam segala hal tidak realistis, jadi enkapsulasi sangat penting. Jika saya harus menghabiskan 30% atau lebih waktu saya pada tombol transparan atau antarmuka yang indah setiap kali saya mengembangkan produk baru, maka saya akan terjun ke sungai :) Delphi memang lebih baik dari MFC dalam hal antarmuka! Tentu saja, ini tidak berarti bahwa MFC tidak dapat merancang antarmuka yang indah, tetapi hal itu hanya memakan waktu terlalu lama dan tidak sepadan.
Apakah RAD benar-benar mengutamakan manfaat? Juga tidak. Setidaknya tidak bagi pemula, karena membuat orang salah paham bahwa pemrograman hanya sekedar menggerakkan mouse dan menarik frame. Hasil akhirnya adalah orang mengira Delphi hanya untuk menulis antarmuka, dan lapisan paling bawah tidak bisa berbuat apa-apa. Tampaknya semua pemrogram MFC berbicara tentang pemrogram Delphi: "Selain memiliki antarmuka yang indah, apa lagi yang bisa dilakukan program Anda?" Sebenarnya selain DDK, apa lagi yang tidak bisa dikembangkan di Delphi? File header API manakah yang tidak dimiliki Delphi? Borland belum mengonversi, tetapi JEDI telah mengonversinya. Meskipun JEDI belum mengonversinya, sama saja jika Anda melakukannya sendiri. Selama Anda memberi saya file header C, saya dapat mengonversinya. Petunjuk konversi singkat di JEDI harus menjadi suatu keharusan bagi setiap programmer Delphi. Setelah file header dikonversi, yang tersisa hanyalah mulai menulis. Apa yang dapat dilakukan MFC, Delphi juga dapat melakukannya! video? jaringan? langsung? Audio? Apa yang Delphi tidak bisa lakukan?
2. Subproses
Saat menulis sebuah event, banyak orang yang langsung menuliskannya secara langsung, berapapun panjang kodenya atau berapa banyak hal yang dilakukan, selama itu dilakukan dalam sebuah event, mereka hanya menuliskannya di kepala mereka tidak punya cara untuk memulai ketika merevisinya beberapa bulan kemudian, karena cuplikan kodenya terlalu panjang. Jadi mengapa tidak memecah cuplikan kodenya? Perhatian manusia terbatas, dan Anda akan merasa pusing jika membaca lebih dari 100 baris kode sekaligus. Senior Delphi memberi tahu saya satu hal: semua proses (proses di sini mencakup PROcedure dan fungsi) tidak boleh melebihi 25 baris! Karena kode yang panjang ini tidak akan membuat kepala Anda pusing, Anda akan dengan mudah memahami apa yang dilakukan proses tersebut.
Lalu bagaimana cara membongkar hal-hal yang awalnya dilakukan dalam sebuah acara? Ada banyak metode, pengalaman saya modular. Misalnya, jika ada banyak hal berbeda yang harus dilakukan dalam suatu peristiwa, maka hal-hal berbeda tersebut diubah menjadi sub-proses yang berbeda, dan kemudian dipanggil dalam proses utama. Sebagian besar proses utama adalah beberapa penilaian dan perulangan, dan akan ada tidak ada proses implementasi khusus. Ini akan membuat banyak cuplikan kode, tetapi ini akan membuat Anda tetap fokus!
Prinsip: Suatu proses hanya melakukan satu hal, dan melakukannya dengan baik.
Referensi: kode sumber VCL. Melihat kode sumber VCL, jarang ada lebih dari 25 baris kode!
3. Nama parameter
Saya ingat saat pertama kali belajar SDK, saya merasa pusing saat melihat notasi Hungaria, berlebihan! Saya tidak dapat mengingatnya! Jadi aku benci penemu itu :) Akhirnya Delphi muncul dan hari-hari menari di belenggu pun berakhir! Di Delphi, mendefinisikan string dengan nama variabel seperti strDoSometing adalah hal yang konyol dan tidak perlu. Selama prosedur Anda singkat dan tidak ada variabel global yang muncul, Anda tidak memerlukan awalan seperti itu. Misalnya:
prosedur SubPro;
var
saya : byte;
Lebar, Tinggi : bilangan bulat;
mulai
Lebar := Dapatkan Lebar;
Tinggi := DapatkanTinggi;
untuk i:=0 hingga 9 lakukan
mulai
DrawThread := TDrawThread.Buat;
DrawThread.Width := Lebar;
DrawThread.Height := Tinggi;
DrawThread.Mulai;
akhir;
akhir;
Saya pikir meskipun segmen kode seperti itu tidak memiliki komentar, mudah untuk mengetahui apa yang coba dilakukannya. Jadi, harap hapus semua awalan dan garis bawah, program Delphi tidak memerlukan ini! Nama parameter kita hanya membutuhkan kata kerja + kata benda. Kita hanya perlu menjelaskan fungsi dari parameter ini. Kita tidak ingin hal-hal yang berlebihan. Kesederhanaan itu indah Di kepala Anda, apa yang Anda pikirkan adalah seperti apa kodenya. Elegan dan Sederhana, Ini Keunggulan Pascal, Harap Dipatuhi!
Prinsip: Kesederhanaan itu indah!
4. Sub-jendela
Banyak orang yang langsung mengoperasikan kontrol di sub-jendela saat memanggil sub-jendela, seperti:
jika SetAlarmParamDlg.ShowModal = MrOK maka
mulai
Waktu Alarm := StrToInt(SetAlarmParamDlg.Edit1.Teks);
Area Alarm := SetAlarmParamDlg.SpinEdit1.Value;
akhir;
Ya Tuhan, jika besok pengguna menganggap Edit atau SpinEdit yang Anda gunakan terlihat jelek dan menggantinya dengan kontrol yang cantik, apa yang akan Anda lakukan? Anda tidak hanya perlu mengubah kode subjendela, tetapi Anda juga perlu mengubah kode formulir utama. Tentu saja, sebuah program dengan satu atau dua sub-jendela tidak akan membuat Anda kesulitan. Bagaimana jika itu adalah program dengan lebih dari dua puluh sub-jendela? Butuh satu hari, tapi alasannya hanya untuk mengubah kontrol! Mengapa tidak mencoba metode lain? Jika Anda menggunakan atribut untuk mewakili parameter yang ingin Anda gunakan, Anda akan menyimpan kode yang tak terhitung jumlahnya.
//bentuk utama
jika SetAlarmParamDlg.ShowModal = MrOK maka
mulai
Waktu Alarm := SetAlarmParamDlg.Waktu Alarm;
Area Alarm := SetAlarmParamDlg.Area Alarm;
akhir;
// subformulir
antarmuka
pribadi
FAlarmTimes : bilangan bulat;
FAlarmArea : bilangan bulat;
diterbitkan
properti AlarmTimes : bilangan bulat baca FAlarmTimes tulis FAlarmTimes;
properti AlarmArea : bilangan bulat baca FAlarmArea tulis FAlarmArea;
pelaksanaan
...
FAlarmTimes := StrToInt(Edit1.Teks);
FAlarmArea := SpinEdit1.Nilai;
ModalHasil := TuanOK;
...
Selama Anda bertahan dengan cara ini, Anda akan mendapatkan keuntungan besar. Sub-jendela hanya melakukan tugasnya sendiri, dan interaksi antara jendela utama dan itu dilakukan melalui atribut sub-jendela tidak akan mempengaruhi jendela utama. Tidak peduli bagaimana tampilan sub-jendela diubah, bagaimana kontrol diganti, atau bagaimana kode dimodifikasi, keseluruhan program tetap sama, hanya antarmuka saja yang berubah.
Prinsip: Modularisasikan sub-jendela Anda. Windows juga merupakan kelas.