Benshark มีส่วนร่วมในการพัฒนาโปรแกรมในเดือนมกราคม 2546 และทำงานมา 19 เดือน ในหมู่พวกเขาการทำงานเป็นระยะ ๆ เป็นเพราะสิ่งที่ต่ำมากที่พัฒนาขึ้นโดยการขาดประสบการณ์ของตัวเองซึ่งนำไปสู่การหลงทางและปัญหาการจ้างงาน! ตอนนี้ Bensha มาถึงความสามารถของโปรแกรมเมอร์ที่ผ่านการรับรองแล้ว
โดยทั่วไปแล้วงานการพัฒนาสำหรับโปรแกรมเมอร์ที่จบการศึกษาใหม่เป็นเพียงโมดูลในโครงการย่อยในโครงการ โมดูลมีเกือบ 5-6 แบบฟอร์มที่มีปริมาณรหัสประมาณ 2,000 บรรทัด ในความเป็นจริงงานจำนวนนี้ไม่ดีเท่าการออกแบบการสำเร็จการศึกษาดังนั้นจึงควรจะเสร็จสมบูรณ์ แต่เวลาในการพัฒนาค่อนข้างเล็กประมาณ 6-12 วันทำการมากกว่า 1-2 เดือนในโรงเรียนและ นอกจากนี้ยังมีเพื่อนร่วมชั้นเพื่อช่วย ดังนั้นจึงมีความเชี่ยวชาญในเครื่องมือการพัฒนาของนักพัฒนาไวยากรณ์เฟรมเวิร์กและห้องสมุด นอกจากนี้คุณสามารถเข้าใจกลไกการทำงานของแพลตฟอร์มระบบและความต้องการอัลกอริทึมและรู้ว่าเกิดอะไรขึ้น จำเป็นต้องให้โปรแกรมเมอร์สามารถทำงานได้อย่างแข็งขันมากกว่าอย่างอดทน สามารถใช้ความคิดริเริ่มในการค้นหาข้อมูลถามเพื่อนร่วมงานและขอให้เพื่อนร่วมงานให้ความช่วยเหลือในงานที่ไม่รู้จัก
ฉลามนี้ส่วนใหญ่มีส่วนร่วมในงานการพัฒนาของระบบฐานข้อมูลแผนกต้อนรับส่วนใหญ่ดังนั้นจึงใช้ส่วนประกอบฐานข้อมูลทั่วไปเพื่อแสดงให้เห็นว่างานของแผนกข้อมูลระบบข้อมูลนั้นหนักที่สุดและถูกวิพากษ์วิจารณ์จากผู้ใช้เสมอ
โดยทั่วไปขั้นตอนการพัฒนาของฉลามนี้คือ:
0 เข้าใจข้อกำหนดของงาน
1. ใช้ฟังก์ชั่นก่อน
2. แก้ไขฟังก์ชันการจัดการข้อยกเว้น
3. บรรลุความเป็นมิตรกับผู้ใช้
4 แก้ปัญหาผู้ใช้
ปัญหาประสิทธิภาพจะถูกปล่อยให้ผู้ใช้แก้ไขหากปริมาณข้อมูลมีขนาดใหญ่ในอนาคต! ในปัจจุบันมันเป็นสิ่งสำคัญที่จะติดตามงาน ส่วนประกอบต่อไปนี้มักใช้
TEDIT TCOMBOBOX TLISTVIEW TTREEVIEW TCHECKLISTBOX TLABEL TDBGRID TIMAGE TMEMO TBUTTON TDBCHART TPANEL TMASKEDIT TDATETIMEPICKER TPAGECONTROL
1. รูปแบบรหัส . ไม่จำเป็นต้องบังคับสิ่งต่าง ๆ สไตล์ ฯลฯ เนื่องจากคุณใช้เครื่องมือ Borland จึงเป็นการดีที่สุดที่จะทำตามสไตล์ Borland
2 การตั้งค่าแอตทริบิวต์ส่วนประกอบ
1 tlabel: autoSize = flase;
2 TEDIT ตั้งค่าค่าอินพุตเริ่มต้นของค่า maxLength
3 TCOMBOBOX หากอนุญาตให้เลือกได้เท่านั้นสไตล์: = CSDROPDOWNLIST;
เมื่อเพิ่มข้อมูลลงในรายการ
fontcombo-> items-> engateUpdate ();
fontcombo-> items-> เพิ่ม ("xxx");
fontcombo-> items-> endupdate ();
ไม่ว่าข้อมูล tlistview ttreeview tdbgird มีฟังก์ชั่นการปิดกั้นการแสดงข้อมูลที่คล้ายกันมากน้อยเพียงใด
4 ttreeview หากคุณไม่ได้แก้ไขข้อความของโหนดคุณจะต้อง rowselect แบบอ่านอย่างเดียว = true;
5 tlistView ViewStyle VSRepOrTreadOnly RowSelect = TRUE;
6 TPAGECONTROL PAGECONTROL1.ACTIONPAGEINDEX: = 0;
7 TDATETIMEPICKER DATEFORMAT: = DFLONG หากมีการคัดลอกเวลาไปแก้ไข
Edit.Text: = DateTimeFormate ("YYYY-MM-DD", DateTimePicker1.Date)
8 tbutton เพื่อตั้งค่าการยกเลิกคำใบ้ modalresult
3 ส่วนประกอบที่มีเค้าโครงอินเทอร์เฟซเดียวกันควรอยู่ด้วยกันและจัดตำแหน่งกับสภาพแวดล้อมขึ้นลงไปทางซ้ายและขวา ตู้คอนเทนเนอร์และในที่สุดก็มอบให้กับผู้คน
รายละเอียดเค้าโครงอินเตอร์เฟส
1): ใช้ปุ่มเฟรมไปยังปุ่มเฟรมที่ทำฟังก์ชั่นเดียวกันหรือคล้ายกันและปุ่มที่ใช้กันทั่วไปจะต้องรองรับทางลัด
2): องค์ประกอบที่ทำหน้าที่หรืองานเดียวกันให้สมบูรณ์จะถูกวางไว้ในตำแหน่งส่วนกลางเพื่อลดระยะห่างของการเคลื่อนไหวของเมาส์
3): แบ่งบล็อกโลคัลของอินเทอร์เฟซตามฟังก์ชั่นล้อมรอบด้วยกล่องเฟรมและมีคำอธิบายฟังก์ชั่นหรือชื่อเรื่อง
4): อินเทอร์เฟซต้องรองรับฟังก์ชั่นปุ่มการท่องเว็บของแป้นพิมพ์โดยอัตโนมัตินั่นคือฟังก์ชั่นการสลับอัตโนมัติของการกดปุ่มแท็บ
5): การควบคุมที่ควรป้อนและข้อมูลสำคัญบนอินเทอร์เฟซควรอยู่ตรงหน้าคำสั่งแท็บก่อนและควรวางไว้ในตำแหน่งที่ชัดเจนมากขึ้นบนหน้าต่าง
6): เป็นการดีที่สุดที่จะไม่เกิน 10 ตัวควบคุมในอินเทอร์เฟซเดียวกัน
7): อินเทอร์เฟซ pagination ควรรองรับการสลับอย่างรวดเร็วระหว่างหน้าและแท็บทางลัดชุดค่าผสมที่ใช้กันทั่วไป
8): ปุ่มเริ่มต้นจะต้องรองรับ Enter และเลือกการดำเนินการนั่นคือหลังจากกด Enter การดำเนินการที่สอดคล้องกันของปุ่มเริ่มต้นจะถูกดำเนินการโดยอัตโนมัติ
9): หลังจากการควบคุมที่เขียนได้ตรวจจับการป้อนข้อมูลที่ผิดกฎหมายควรให้คำอธิบายและสามารถโฟกัสได้โดยอัตโนมัติ
10): คำสั่งของคีย์แท็บและลำดับของการควบคุมควรสอดคล้องกัน
11): กล่องกาเครื่องหมายและกล่องตัวเลือกจะถูกจัดเรียงหนึ่งหลังจากที่อื่น ๆ ตามความน่าจะเป็นด้านล่างสูงของความน่าจะเป็นในการเลือก
12): กล่องกาเครื่องหมายและกล่องตัวเลือกต้องมีตัวเลือกเริ่มต้นและการเลือกแท็บรองรับ
13): เมื่อจำนวนตัวเลือกเหมือนกันให้ใช้กล่องตัวเลือกแทนกล่องรายการแบบเลื่อนลง
14): ใช้กล่องดรอปดาวน์แทนกล่องตัวเลือกเมื่อพื้นที่อินเตอร์เฟสมีขนาดเล็ก
15): เมื่อจำนวนตัวเลือกที่เรียกว่าเล็กให้ใช้กล่องตัวเลือกแทนที่จะใช้กล่องรายการแบบเลื่อนลง
16): ซอฟต์แวร์ที่มีความเป็นมืออาชีพที่แข็งแกร่งควรใช้คำศัพท์ระดับมืออาชีพที่เกี่ยวข้องในขณะที่อินเทอร์เฟซสากลสนับสนุนการใช้คำสากล
4 รหัส
1 การตรวจสอบการใช้งาน: ตรวจสอบว่ามีการใช้งานฟังก์ชั่นและข้อ จำกัด ทั้งหมดตามข้อกำหนดที่ต้องการ
2 การตรวจสอบขอบเขต: ดำเนินการตรวจสอบขอบเขตของฟังก์ชั่นเช่นอินพุตจากชนิดข้อมูลที่แตกต่างกันหรือข้อมูลของช่วงที่แตกต่างกัน
3 การตรวจสอบการเข้าถึงที่ผิดกฎหมาย: ทดสอบว่ามีข้อผิดพลาดการเข้าถึงหน่วยความจำที่ผิดกฎหมายหรือไม่ ข้อความแสดงข้อผิดพลาดอ้างอิงสำหรับการพิจารณาว่ามันเป็นของข้อผิดพลาดประเภทนี้คล้ายกัน:
” …ไม่พบ”,” รายการดัชนีนอกขอบเขต…”,“ เข้าถึงการละเมิดที่อยู่…”
4: การตรวจสอบคำแนะนำข้อมูลแจ้ง: ป้อนอักขระใด ๆ ที่จะรวมถึงกล่องแก้ไขกล่องตารางและกล่องเลือกรวมถึงอักขระภาษาอังกฤษและจีนทดสอบว่าจะเกิดข้อผิดพลาดในการเข้าถึงที่ผิดกฎหมายหรือไม่และจะใช้อักขระที่ไม่สามารถยอมรับได้ และเคล็ดลับที่จะชี้นำ
5 การตรวจสอบตามหน่วย: ตรวจสอบว่าคำอธิบายส่วนหัวของหน่วยในหน่วยนี้คำอธิบายของแต่ละฟังก์ชั่นและคำอธิบายคำอธิบายประกอบนั้นถูกต้องหรือไม่ คำแนะนำการอ้างอิง: มีการอ้างอิงเพิ่มเติมหรือไม่
// โดยเฉพาะอย่างยิ่งหากไฟล์ส่วนหัว C ++ มีไม่จำเป็นรวมถึงปัญหาที่ไม่จำเป็นจะเกิดขึ้นสำหรับหน่วยอื่น ๆ
ในความเป็นจริงสิ่งเหล่านี้เรียกว่าการทดสอบปกขาวและเนื้อหาทดสอบหน่วย หากคุณต้องการเขียนรหัสทดสอบตามหนังสือทดสอบฉันคิดว่านักพัฒนาทุกคนไม่ต้องการ! แต่มันจะไม่ทำงานมันง่ายที่จะทำผิดพลาดและทำให้ยากที่จะส่งมอบ ดังนั้นจึงจำเป็นอย่างยิ่งที่จะต้องเข้าใจวิธีการทดสอบวิธีการเหล่านี้
มีการแนะนำให้รู้จักกับวิศวกรรมซอฟต์แวร์ในมหาวิทยาลัยและจะต้องมีนักออกแบบซอฟต์แวร์ เมื่อใดก็ตามที่คุณเขียนโปรแกรมคุณจะต้องระมัดระวังในการพิจารณาข้อผิดพลาดที่อาจเกิดขึ้นในสถานการณ์ต่าง ๆ ! แม้ว่าตัวแปรจะใช้เมื่อใช้งานฟังก์ชั่นว่างเปล่า? ค่าถูกต้องหรือไม่? มันล้น? คุณล้างพื้นที่ของตัวแปรหรือไม่? เป็นข้อกำหนดกรณีหรือไม่? มีช่องว่างทั้งด้านหน้าและหลังหรือไม่?
การตัดสินเหล่านี้จะต้องเขียนก่อนในฟังก์ชั่นและจุดเริ่มต้นของกระบวนการ!
ถ้า (treeview-> เลือก == null) // ตัวแปรจะว่างเปล่าหรือไม่?
แล้วกลับ;
std :: vecotr <int> intarray; // มันล้นหรือไม่?
ถ้า (intarray <= 0)
แล้วกลับ;
if (i <listview.items-> count) // มันล้นและข้ามขอบเขตหรือไม่?
แก้ไข-> text = listView-> item-item [i] .caption;
แก้ไข-> text.trim (); // มีพื้นที่ว่างก่อนและหลังหรือไม่?
ถ่าน A [10];
memcpy (a, "/0", 10); // คุณล้างพื้นที่ของตัวแปรหรือไม่?
A [9] = 'i';
// บุคคลที่ใช้ฟังก์ชั่นของคุณเขียนลูปเพื่อเรียกตัวแปรฟังก์ชั่นของคุณจะนำค่าสุดท้าย เงื่อนไขการตัดสินของผู้โทรจะสูญเสียผลกระทบ!
if (name.trim () ==” Delphi”) จากนั้น NAME =” BCB”;
switch () {case to break;
5 ข้อมูลเริ่มต้นการแจ้งเตือนตำแหน่งและความเป็นมิตร
เมื่ออินเทอร์เฟซปรากฏตัวข้อมูลจะปรากฏขึ้นตามค่าเริ่มต้น
combobox1.itemindex: = 0;
โดยทั่วไปแล้วการเพิ่มเติมและการดัดแปลงใหม่จะได้รับการแก้ไขเป็นคู่เดียวโดยใช้อินเทอร์เฟซหนึ่ง เมื่อการเพิ่มใหม่เสร็จสิ้นส่วนประกอบทั้งหมดจะต้องอยู่ในตำแหน่งที่เพิ่มขึ้นใหม่และสิ่งเดียวกันนี้เป็นจริงสำหรับการปรับเปลี่ยน เมื่อลบให้ค้นหาระเบียนถัดไป
ListView และ DBGIRD เพื่อให้มีฟังก์ชั่นการเรียงลำดับคลิกที่ชื่อเพื่อขึ้น/ลงตามวันที่ตัวอักษรตัวเลข
ListView และ DBGIRD เมื่อการโฟกัสข้อมูลที่เลือกถูกย้ายบนปุ่มแถวไหนถูกเลือกในปัจจุบัน -
เป็นโมฆะ __fastCall TFRMGATHER760 :: LVDATACUSTOMDRAWITEM (TCUSTOMLISTView *ผู้ส่ง, tlistItem *รายการ, สถานะ tCustomDrawState, bool & defaultDraw) // รหัสนี้จะวาดสีเหลืองด้านล่างบนบรรทัดที่เลือก
-
ถ้า (ผู้ส่ง-> เลือก! = null)
if (item-> index == ผู้ส่ง-> selected-> index)
-
ผู้ส่ง-> canvas-> brush-> color = clyellow;
ผู้ส่ง-> canvas-> font-> color = clblue;
-
-
สำหรับการดำเนินการที่มักจะเกิน 2 วินาทีจะต้องอยู่ในฟังก์ชัน
Tcursor OldCursor;
oldCursor = หน้าจอ-> เคอร์เซอร์;
หน้าจอ-> เคอร์เซอร์ = crsqlwait;
พยายาม{ . - - - - - } __ ในที่สุด {หน้าจอ-> เคอร์เซอร์ = oldCursor;}
ขั้นตอน TFORM1.FormKeyDown (ผู้ส่ง: TOBJECT; VAR KEY: Word; Shift: TSHIFTSTATE);
เริ่ม
if (shift = []) และ (key = vk_return) จากนั้น // แทนที่ปุ่มแท็บด้วย Enter
ดำเนินการ (WM_NEXTDLGCTL, 0, 0);
ถ้า key = vk_next แล้ว // กด PageUp PageWown เพื่อสร้างหน้าสวิตช์ tpageControl
เริ่ม
ถ้า pageControl.activePageIndex = pageControl.pagecount - 1 แล้ว
PageControl.ActivePageIndex: = 0
อื่น
PageControl.ActivePageIndex: = PageControl.ActivePageIndex + 1;
จบ
อื่นถ้า key = vk_prior แล้ว
เริ่ม
ถ้า pageControl.activePageIndex = 0 แล้ว
PageControl.ActivePageIndex: = PageControl.pagecount - 1
อื่น
PageControl.ActivePageIndex: = PageControl.ActivePageIndex - 1;
จบ;
จบ;
จบ.
การแลกเปลี่ยนปุ่ม 6 ปุ่ม
เมื่อใดก็ตามที่การดำเนินการเสร็จสิ้นปุ่มบางปุ่มจะไม่ถูกต้องและภายใต้สถานการณ์ใดที่พวกเขาจะได้รับการฟื้นฟูให้ถูกต้อง? แม้ว่าจะมีเพียงหนึ่งย่อหน้า แต่หากไม่ได้ตั้งค่าไม่ได้ผล แต่ก็มักจะทำให้เกิดข้อผิดพลาดร้ายแรงต่าง ๆ ! เนื่องจากคุณไม่สามารถคาดการณ์ได้ว่าผู้ใช้จะใช้งานซอฟต์แวร์ของคุณอย่างไรคุณสามารถใช้ Rose เพื่อวาดแผนภาพสถานะหรือใช้ Word เพื่อเป็นตัวแทน!
7 ประสิทธิภาพ
เมื่อมีข้อมูลมากกว่า 100 ข้อมูลส่วนประกอบการแสดงข้อมูลเช่น ComboBox Listbox TreeView ListView DBGrid จะถูกป้อนและสืบค้นในขณะที่ป้อน
การสนับสนุนการสืบค้นฟัซซี่ไม่มีอะไรมากไปกว่า '%xxx%'
เป็นโมฆะ __fastCall tfrmgather760 :: edt_namekeypress (tobject *ผู้ส่งถ่านและคีย์)
-
if (key! = vk_return)
กลับ;
สตริง ssql;
SSQL = "เลือกชื่อเป็นชื่อขายเป็นยอดขายจากพนักงาน";
SSQL + = "โดยที่ชื่อ '%" + ตัวพิมพ์เล็ก (edt_name-> text.trim ()) + "%'";
tfrmpubdlg *pubdlg = ใหม่ tfrmpubdlg (นี่);
pubdlg-> ExecuteQuery (SSQL);
pubdlg-> showmodal ();
-
-
8 คนอื่น ๆ
เมื่อพัฒนาโมดูลแต่ละหน่วยและ DFM จะใช้เป็นหน่วยทั่วไป จะสร้างโครงสร้างการส่งตัวละครในหน่วย
struct tablename
-
ชื่อสตริง;
สตริง FiledName;
-
};
std :: เวกเตอร์ <String> serrorarry // พรอมต์ข้อผิดพลาด Unified
และส่วน delphi resoucstring สามารถจัดหาทรัพยากรและง่ายต่อการแปลเป็นภาษาท้องถิ่น
เมื่อเพิ่มและแก้ไขการตรวจสอบข้อมูลทั้งหมดจะเข้มข้นภายใต้ปุ่มบันทึก
เป็นโมฆะ __fastCall TFORM3 :: BTN_SAVECLICK (ผู้ส่ง)
-
if (edt_name-> text.isempty ())
-
Showmessage ("");
edit_name-> setFocus ();
กลับ;
-
modalresult = mrok;
-
การออกแบบที่สำเร็จการศึกษาส่วนใหญ่ของนักเรียนในโรงเรียนเป็นฐานข้อมูลเช่นสองหรือสามชั้น คุณต้องทำโปรแกรมการออกแบบการสำเร็จการศึกษาอย่างจริงจังและใช้จ่ายเงินเพื่อขอให้เพื่อนร่วมชั้นของคุณช่วยคุณทำการทดสอบและเสนอความสะดวกในการดำเนินงานมากขึ้น โดยการผ่านการทดสอบของผู้อื่นเท่านั้นที่จะสามารถปรับปรุงความสามารถของคุณและรหัสส่วนใหญ่คือการจัดการข้อยกเว้นและใช้งานง่าย! มันจะง่ายมากที่จะหา บริษัท ที่ดีเมื่อคุณมองหางานกับผลงานของคุณ
ในความเป็นจริงเมื่อมีส่วนร่วมในการพัฒนาฐานข้อมูลส่วนหน้าสิ่งสำคัญคือการเขียนรหัสที่ใช้งานง่าย!