1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng Bộ môn Công nghệ phần mềm - Bài 6: Kỹ thuật lập trình

43 75 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 43
Dung lượng 836,64 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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.

Trang 1

K  THU T L P TRÌNH Ỹ Ậ Ậ

BM CNPM – Khoa CNTT – 

HVKTQS 10/2012

Trang 3

 Tuy  nhiên,  th i  gian  dành  cho  l p  trình  ờ ậ

t ườ ng đ i ít h n th i gian dành cho ki m  ố ớ ờ ể

th  và b o trì.  ử ả

 Tính  d   đ c/hi u  là  m c  tiêu  hàng  đ u  ễ ọ ể ụ ầ

c a khâu l p trình ủ ậ

Trang 6

L p trình h ậ ướ ng đ i t ố ượ ng

 Là kĩ thu t l p trình h  tr  công ngh  đ i t ậ ậ ỗ ợ ệ ố ượ ng. OOP đ ượ c xem là giúp tăng năng su 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ép l p trình viên t p trung vào các đ i t ậ ậ ố ượ ng ph n m m   b c cao h n. Ngoài ra, nhi u  ầ ề ở ậ ơ ề

ng ườ i còn cho r ng OOP d  ti p thu h n cho nh ng ng ằ ễ ế ơ ữ ườ i m i h c v  l p trình h n là các  ớ ọ ề ậ ơ

ph ươ ng pháp tr ướ c đó.

 M t cách gi n l ộ ả ượ c, đây là khái ni m và là m t n  l c nh m gi m nh  các thao tác vi t mã  ệ ộ ỗ ự ằ ả ẹ ế cho  ng ườ ậ i  l p  trình,  cho  phép  h   t o  ra  các  ng  d ng mà  các  y u  t   bên  ngoài  có  th   ọ ạ ứ ụ ế ố ể

t ươ ng tác v i các ch ớ ươ ng trình đó gi ng nh  là t ố ư ươ ng tác v i các đ i t ớ ố ượ ng v t lý ậ

 Nh ng đ i t ữ ố ượ ng trong m t ngôn ng  OOP là các k t h p gi a mã và d  li u mà chúng  ộ ữ ế ợ ữ ữ ệ

đ ượ c nhìn nh n nh  là m t đ n v  duy nh t. M i đ i t ậ ư ộ ơ ị ấ ỗ ố ượ ng có m t tên riêng bi t và t t c   ộ ệ ấ ả các tham chi u đ n đ i t ế ế ố ượ ng đó đ ượ c ti n hành qua tên c a nó. Nh  v y, m i đ i t ế ủ ư ậ ỗ ố ượ ng 

có kh  năng nh n vào các thông báo, x  lý d  li u (bên trong c a nó), và g i ra hay tr  l i  ả ậ ử ữ ệ ủ ử ả ờ

đ n các đ i t ế ố ượ ng khác hay đ n môi tr ế ườ ng.

 Ra đ i t  nh ng năm 1980 ờ ừ ữ

 Che d u thông tin, đ m b o tính toàn v n, đúng đ n c u d  li u ấ ả ả ẹ ắ ả ữ ệ

Trang 7

Che d u thông tin ấ

 Ph n m m luôn luôn s  d ng m t s  c u ầ ề ử ụ ộ ố ấ

trúc d  li u đ  l u tr  thông tin.ữ ệ ể ư ữ

 M i m t c u trúc d  li u s  đỗ ộ ấ ữ ệ ẽ ược truy xu t ấ

b i m t s  h u h n các thao tác ở ộ ố ữ ạ

(operations). Các thao tác khác s  không th  ẽ ểtruy nh p thông tin này đậ ược => đây chính là nguyên lý che d u thông tin.ấ

 Ph n l n các ngôn ng  LT HĐT cho phép ầ ớ ữ

làm đi u nàyề

Trang 8

Các nguyên lý l p trình ậ

 Nhi m  v   chính  c a  l p  trình  viên  là  ệ ụ ủ ậ

t o ra code v i ít l i nh t v i th i gian ít  ạ ớ ỗ ấ ớ ờ

Trang 11

M t s  l u ý th c t ộ ố ư ự ế

Nesting: Nên tránh các L p sâu (deep nesting). For ặ example, consider the following construct of nested

Trang 12

M t s  l u ý th c t ộ ố ư ự ế

Module  Size:  Vi c  s   d ng  hàm  v i  nhi u ệ ử ụ ớ ề

bi n s  ph i h t s c c n th n (>= 100). Kích ế ố ả ế ứ ẩ ậ

thước  l n  có  th   làm  cho  vi c  qu n  lý  k t ớ ể ệ ả ếdính và k t n i khó 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 ố ả ặ ệ ẩ ậ

được chia thnàh nhièu module nh  h nỏ ơ

Trang 14

M t s  l u ý th c t ộ ố ư ự ế

Switch Case with Default: Đ m b o  ả ả hành vi c a CT  n đ nh.  ủ ổ ị

Trang 15

M t s  l u ý th c t ộ ố ư ự ế

Empty Catch Block: nên có ch n b t l i, ặ ắ ỗtránh đ  tr ng.ể ố

Trang 17

M t s  l u ý th c t ộ ố ư ự ế

Read Return to Be Checked:  Giá tr  tr  v  ị ả ềsau l nh đ c nên đệ ọ ược ki m traể

 VD:  if  read  from  scanf()  is  more  than expected,  then  it  may  cause  a  buffer overflow. Hence, the value of read should be checked  before  accessing  the  data  read. (This  is  the  reason  why  most  languages provide a return value for the read operation.)

Trang 18

M t s  l u ý th c t ộ ố ư ự ế

Return from Finally Block: One should not return 

from finally block, as it can create false beliefs. For  example, consider the code

Trang 19

M t s  l u ý th c t ộ ố ư ự ế

Correlated Parameters: Thông th ng, s  t n t i ườ ẽ ồ ạ

m i quan h  gi a các tham s   ố ệ ữ ố

 VD: in the code segment given below, “length” represents  the size of BUFFER. If the correlation does not hold, we can  run into a serious problem like buffer overflow (illustrated in  the code fragment below).

 Vì v y, nên ki m tra m i quan h  này h n là gi  thi t  ậ ể ố ệ ơ ả ế

nó đã th a mãn.  ỏ

 void (char *src , int length , char destn []) {

 strcpy (destn , src); /* Can cause buffer overflow if length >  MAX_SIZE */

 }

Trang 20

M t s  l u ý th c t ộ ố ư ự ế

Trusted  Data  Sources:  ki m  tra  d   ể ữ

li u  nên  đ ệ ượ c  th c  hi n  tr ự ệ ướ c  khi  truy 

nh p chúng ậ

 For  example,  while  doing  the  string  copy operation, we should check that the source string  is  null  terminated,  or  that  its  size  is 

as we expect. 

Give  Importance  to  Exceptions:  Chú 

tr ng đi u khi n ngo i l   ọ ề ể ạ ệ

Trang 21

Chu n mã ngu n ẩ ồ

 Th c t  là chúng ta tiêu t n r t nhi u  ự ế ố ấ ề

trong vi c đ c hi u mã ngu n ệ ọ ể ồ

 Vì v y c n nh ng chu n m c nh t đ nh  ậ ầ ữ ẩ ự ấ ị trong l p trình ậ

Trang 22

 Method names should be verbs starting with lowercase: Ph ươ ng th c  ứ nên là đ ng t  và b t đ u b ng ch  th ộ ừ ắ ầ ằ ữ ườ ng (e.g., getValue()).

Exception classes should be suffixed with Exception: Tên các l p ngo i ớ ạ

l  nên k t thúc b i h u t   ệ ế ở ậ ố Exception (e.g., OutOfBoundException)

Trang 23

Qui  ướ c v  đ t tên ề ặ

 Bi n Private nên ch  t ế ỉ ườ ng minh (e.g., “private int 

value ”)

 Bi n v i ph m vi r ng nên có tên dài và ng ế ớ ạ ộ ượ ạ c l i; 

bi n ch y vòng l p nên đ ế ạ ặ ượ c đ t tên là i, j, k, ….  ặ

 Ti n t   ề ố is nên đ c s  d ng cho các bi n bool và ượ ử ụ ế các ph ươ ng th c đ  thánh nh m l n (e.g., isStatus  ứ ể ầ ẫ nên đ ượ c s  d ng thay cho tên status); bi n ch  ph   ử ụ ế ỉ ủ

đ nh negative boolean c n tránh ị ầ

 T   ừ compute có th  s  d ng cho các hàm tính toán.ể ử ụ

Trang 24

Qui  c Files ướ

 T n t i m t s  qui  ồ ạ ố ố ướ c v  đ t tên và d   ề ặ ữ

li u t p ệ ệ

 Java  source  files  should  have  the extension  java—this  is  enforced  by  most compilers and tools

 Kích  th ướ c  dòng  nên  nh   h n  80  c t,  ỏ ơ ộ tránh kí t  đ c bi t ự ặ ệ

Trang 25

Qui  c v  Statements ướ ề

Không có qui  ướ c chung đáng k   ể

 Các bi n nên đ ế ượ c kh i t o t i n i khai báo và nên đ ở ạ ạ ơ ượ c khai báo trong ph m  ạ

vi nh  nh t có th ỏ ấ ể

 Khai báo các bi n liên quan v i nhau cùng trong m t đo n l nh. Các bi n  ế ớ ộ ạ ệ ế không liên quan đ n nhau nên đ ế ượ c khai báo   các đo n l nh khác nhau ở ạ ệ

 Các thu c tính c a l p không nên đ  public ộ ủ ớ ể

 Ch  s  d ng các l nh ki m tra vòng l p trong vòng l p for ỉ ử ụ ệ ể ặ ặ

 Các bi n vòng l p nên đ ế ặ ượ c kh i t o ngay tr ở ạ ướ c vòng l p ặ

Trang 26

Qui  c v  Commenting and  ướ ề Layout

 Chú thích d ng text đ  cho ng ạ ể ườ ọ i đ c 

d  hi u code c a mình.  ễ ể ủ

 Chú thích c n gi i thích c  th  ch c  ầ ả ụ ể ứ

năng, tham s  c a CT ố ủ

 Layout giúp cho ch ươ ng trình sáng s a  ủ

có c u trúc rõ dàng ấ

Trang 27

Phát tri n Code tăng d n  ể ầ

(Incrementally)

 Ho t đ ng l p trình b t đ u khi m t s   ạ ộ ậ ắ ầ ộ ố thi t k  hoàn thành.  ế ế

 M i  module  s   do  m t  ho c  nhi u  l p  ỗ ẽ ộ ặ ề ậ trình viên đ m rnhi m.  ả ệ

 Chính  vì  v y  mà  nhu  c u  qu n  lý  qui  ậ ầ ả trình này là r t cao. Trong ph n này, ta  ấ ầ tham kh o mô hình tăng d n ả ầ

Trang 29

đi m ki m th  code, trong TDD  ể ể ử

ng ườ ậ i l p trình viên vi t các  ế

k ch b n test tr ị ả ướ c, sau đó m i  ớ

vi t code, code đ ế ượ c vi t sau  ế

ph i v ả ượ t qua đ ượ c các k ch  ị

b n test này ả

 Toàn b  quá trình đ ộ ượ c th c  ự

hi n t ng b ệ ừ ướ c, các k ch b n  ị ả

test đ ượ c xây d ng d a trên  ự ự

các đ c t , còn code đ ặ ả ượ c vi t  ế

ph i v ả ượ c qua đ ượ c k ch b n  ị ả

test. Ti n trình TDD đ ế ượ c th   ể

hi n trên hình Figure 7.2 ệ

Trang 30

Ti n trình l p trình c p Pair  ế ậ ặ Programming

 Trong  l p  trình  theo  c p,  code  đ ậ ặ ượ c 

vi t  b i  m t  c p  l p  trình  viên  ch   ế ở ộ ặ ậ ứ không  ph i  b i  m t  ng ả ở ộ ườ i.  Theo  đó,  công  vi c  vi t  code  s   đ ệ ế ẽ ượ c  phân  b   ố cho t ng c p l p trình viên ừ ặ ậ

 =>Chi phí cao.

Trang 31

Xây d ng và qu n lý Source  ự ả Code

 Trong m t d  án th ộ ự ườ ng có nhi u nhóm ng ề ườ i khác nhau cùng  tham gia phát tri n code. M i l p trình viên làm vi c v i m t file  ể ỗ ậ ệ ớ ộ

mã  ngu n,  nh ng  file  này s   đ ồ ữ ẽ ượ c biên d ch v i nhau  đ  t o  ị ớ ể ạ nên ph n m m.  ầ ề

 Trong quá trình phát tri n code, các l p trình viên th ể ậ ườ ng luôn  thay  đ i các file mã ngu n do h  t o ra, cũng nh  nh ng file  ổ ồ ọ ạ ư ữ không do h  t o ra.  ọ ạ

 V i m c đích ki m soát t t c  các file mã ngu n và quá trình  ớ ụ ể ấ ả ồ thay đ i c a chúng, các công c  ki m soát mã ngu n nh  CVS  ổ ủ ụ ể ồ ư trong Linux (www.cvshome.org) hay Visual Source Safe (VSS)  trong  Windows  (msdn.microsoft.com/vstudio/previous/ssafe) 

th ườ ng đ ượ c s  d ng ử ụ

Trang 32

 Get a local copy. 

 Make changes to file(s). 

 Get reports. 

Trang 33

C p nh t thay đ i – refactoring ậ ậ ổ

 Thay đ i c u trúc bên trong mà không  ổ ấ làm thay đ i hành vi c a PM.  ổ ủ

Trang 34

 4. Dánh sách tham s  dài ­ ố Long Parameter List.

 5. các câu l nh Switch ­ ệ Switch Statements.

Trang 35

Thanh tra mã ngu n ồ

 Thanh tra Mã ngu n đồ ược th c hi n b i ự ệ ở

ngườ ậi l p trình và dành cho ngườ ậi l p trình

 Là m t ti n trình v i các qui đ nh v  vai trò rõ ộ ế ớ ị ềràng

 Tr ng tâm tìm ra l i defects.ọ ỗ

 D  li u thanh tra đữ ệ ược ghi l i và dùng đ  ạ ể

đánh giá m c đ  hi u qu  c a quá trình ứ ộ ệ ả ủ

thanh tra

Trang 36

L p k  ho ch ậ ế ạ

 M c  tiêu  c a  giai  đo n  l p  k   ho ch  là  đ  ụ ủ ạ ậ ế ạ ểchu n b  cho thanh tra. ẩ ị

 Đ i thanh tra độ ược thành l p s  bao g m các ậ ẽ ồ

l p trình viên mà code c a h  đang c n xem ậ ủ ọ ầxét. 

 Đ i thanh tra nên bao g m ít nh t ba ngộ ồ ấ ười, 

m c dù đôi khi có b n ho c năm thành viên. ặ ố ặ

 Đ i thanh tra ph i có m t ngộ ả ộ ười ph  trách.ụ

Trang 37

T  ki m tra (Self­review) ự ể

 Ng ườ i LT t  ki m tra mã ngu n c a  ự ể ồ ủ mình

Trang 39

Ki m tra theo nhóm ể

Trang 40

 Tuy nhiên, hi n nay đã có m t s  pp ệ ố ố ước 

lượng d a trên s  lự ố ượng toán t  và toán ử

h ngạ

Trang 42

K tthúc. Câu h i ế ỏ

Trang 43

 Đoàn  Văn  Ban.  Phân  tích,  Thi t  k   và  L p ế ế ậtrình Hướng đ i tố ượng ­ 1997 Nxb Th ng kê ố

Vi t nam.ệ

Ngày đăng: 30/01/2020, 01:55

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm