Bài 6 - Kỹ thuật lập trình. Đây là tài liệu rất bổ ích đối với các sinh viên thuộc ngành Công nghệ thông tin. Nội dung của bài giảng bao gồm: Lập trình cấu trúc, lập trình hướng đối tượng, che dấu thông tin, các nguyên lý lập trình, chuẩn mã nguồn, qui ước Files, phát triển Code tăng dần (Incrementally), xây dựng và quản lý Source Code... Mời các bạn cùng tham khảo.
Nội dung trích xuất từ tài liệu:
Bài giảng Bộ môn Công nghệ phần mềm - Bài 6: Kỹ thuật lập trìnhKỸTHUẬTLẬPTRÌNHBMCNPM–KhoaCNTT– HVKTQS 10/2012Outline Lịchsửpháttriểncủacácmẫuhìnhlậptrình Cácnguyênlýlậptrình Cáccôngcụlậptrình Pháttriểnmãnguồnincremental Quảnlýmãnguồn Kiểmtramãnguồn CácđộđoGiớithiệuchung Lập trình được tiến hành để triển khai thiếtkếphầnmềm. Kỹ thuật lập trình sẽ ảnh hưởng cả hai quátrìnhkiểmthửvàbảotrì. Tuy nhiên, thời gian dành cho lập trình tườngđốiíthớnthờigiandànhchokiểm thửvàbảotrì. Tính dễ đọc/hiểu là mục tiêu hàng đầu củakhâulậptrình.Lậptrìnhcấutrúc LTCT bắt đầu từ những năm 70 nhằm mụcđíchtạoracáccodemàkhôngcó “goto” Ngoài ra, múc đích khác của LTCT là trợgiúpquátrìnhquátrìnhkiểmchứng mãnguồn.Lậptrìnhcấutrúc Câulệnhkhôngchỉđơnthuầnlàgán Bacấutrúclệnhcơbản: Selection:ifBthenS1elseS2ifBthenS1 Iteration:WhileBdoS repeatSuntilB Sequencing:S1;S2;S3;... Luônluonocó:Singleentry,singleexitLậptrìnhhướngđốitượng Làkĩthuậtlậptrìnhhỗtrợcôngnghệđốitượng.OOPđượcxemlàgiúptăngnăngsuất, đơn giản hóa độ phức tạp khi bảo trì cũng như mở rộng phần mềm bằng cách cho phéplậptrìnhviêntậptrungvàocácđốitượngphầnmềm ởbậccaohơn.Ngoàira,nhiều ngườicònchorằngOOPdễtiếpthuhơnchonhữngng ườim ớih ọcv ềl ậptrìnhhơnlàcác phươngpháptrướcđó. Mộtcáchgiảnlược,đâylàkháiniệmvàlàmộtnỗlựcnhằmgiảmnhẹcácthaotácviếtmã cho người lập trình, cho phép họ tạo ra cácứng dụngmà các yếu tố bên ngoài có thể tươngtácvớicácchươngtrìnhđógiốngnhưlàtươngtácvớicácđốitượngvậtlý. NhữngđốitượngtrongmộtngônngữOOPlàcáckếthợpgiữamãvàdữliệumàchúng đượcnhìnnhậnnhưlàmộtđơnvịduynhất.Mỗiđốitượngcómộttênriêngbiệtvàtấtcả cácthamchiếuđếnđốitượngđóđượctiếnhànhquatêncủanó.Nhưvậy,mỗiđốitượng cókhảnăngnhậnvàocácthôngbáo,xửlýdữliệu(bêntrongcủanó),vàgửirahaytrảlời đếncácđốitượngkháchayđếnmôitrường. Rađờitừnhữngnăm1980. Chedấuthôngtin,đảmbảotínhtoànvẹn,đúngđắncảudữliệuChedấuthôngtin Phầnmềmluônluônsửdụngmộtsốcấu trúcdữliệuđểlưutrữthôngtin. Mỗimộtcấutrúcdữliệusẽđượctruyxuất bởimộtsốhữuhạncácthaotác (operations).Cácthaotáckhácsẽkhôngthể truynhậpthôngtinnàyđược=>đâychínhlà nguyênlýchedấuthôngtin. PhầnlớncácngônngữLTHĐTchophép làmđiềunàyCácnguyênlýlậptrình Nhiệm vụ chính của lập trình viên là tạoracodevớiítlỗinhấtvớithờigianít nhất. Kỹnănglậptrìnhthunhậnđượcthông quathựctếviếtcode. Lậptrìnhtốtkhôngphụthuộcvàomột ngônngữcụthểMộtsốlưuýthựctế Control Constructs: Sử dụng nhiều cấutrúcsingleentry,singleexit.Tăng cườngsửdụngcáccấutrúcchuẩn. Gotos: Không nên sử dụng các lệnh gotoquánhiều.Trongcáctrườnghợp bấtđắcdĩ.Mộtsốlưuýthựctế Chedấuthôngtin:nênđượcsửdụng rộngrãi.Truynhậpthôngtinnêntheo cơchếhàm. KiểuDLUserDefined:Nếungônngữ LTchophépthìnênsửdụngcáckiểu DLtựđịnhnghĩa.Mộtsốlưuýthựctế Nesting:NêntránhcácLặpsâu(deepnesting).For example,considerthefollowingconstructofnested ifthenelses: ifC1thenS1 elseifC2thenS2 elseifC3thenS3 elseifC4thenS4; Nếucácđiềukiệnlàkhôngliênkếtdisjointthìta nên: ifC1thenS1; ifC2thenS2; ifC3thenS3; ifC4thenS4;Mộtsốlưuýthựctế Module Size: Việc sử dụng hàm với nhiều biếnsốphảihếtsứccẩnthận(>=100).Kích thước lớn có thể làm cho việc quản lý kết dínhvàkếtnốikhókhăn. Module Interface: (rule of thumb), bất kỳ một giao diện module mà có nhiều hơn 5 tham số thì phải đặc biệt cẩn thận và nên đượcchiathnàhnhièumodulenhỏhơnMộtsốlưuýthựctế SideEffects:Hiệntượngthayđổitrạng thái CT mà không thay đổi giá trị tham số. Thường xảy ra khi ta thay đổi biến toàncục. Robustness: Xử lý tốt các điều kiện ngoạilệ.Mộtsốlưuýthựctế SwitchCasewithDefault:Đảmbảo hànhvicủaCTổnđịnh. VD: switch(i){ case0:{s=malloc(size) } s[0]=y;/*NULLdereferenceifdefault occurs*/Mộtsốlưuýthựctế EmptyCatchBlock:nêncóchặnbắtlỗi, tránhđểtrống. VD: try{ FileInputStre ...