You are on page 1of 112

Một03L619670.

fm ivThursday, 7 tháng tư trang, năm 2011 5:54 PM


xuất bản bởi Microsoft bấm một Division của tập đoàn Microsoft một cách Microsoft Redmond,
Washington 98052-6399
Tác quyền © năm 2004 bởi Steven C. McConnell
tất cả quyền dành riêng. Không có một phần của nội dung của cuốn sách này có thể tái diễn
hoặc bệnh lây truyền qua bất kỳ hình thức hay bởi bất cứ có nghĩa là nếu không có sự cho
phép viết của nhà xuất bản.
Thư viện Quốc hội Cataloging-in-dữ liệu xuất bản McConnell, Steve hoàn thành / Steve
McConnell mã.--Ai ở trong đó thế? ed.
p.cm.
Bao gồm chỉ mục.
ISBN-1967-0 1 0-7356. Phần mềm máy tính--phát triển - có làm bằng tay, cẩm nang đó, v.v...
tôi... tựa đề.
Cuộc phỏng vấn76.76.D39 năm 2004 005.147M--dc mất22 2004049981
In và nhốt ở Hoa Kỳ.
15 16 17 18 19 20 21 22 23 24 QGT 6 5 4 3 2 1
phân phối ở Canada bởi Đ.L. Công ty Ltd. Fenn và một CIP 1895 kỷ lục cuốn sách này có sẵn
từ thư viện British.
Microsoft đang có sẵn sách báo chí qua nhà phân phối và trên toàn thế giới booksellers. Để tìm
thông tin thêm về phiên bản quốc tế, hãy liên lạc với văn phòng tập đoàn Microsoft địa phương
hoặc liên lạc với Microsoft bấm Inter- trực tiếp ở quốc gia điện thư (452) 936-7329. Thăm nơi
Mạng của chúng ta tại Www.microsoft.com/mspress. Gửi ghi chú cho Mspinput@microsoft.com.
Microsoft, báo chí, PowerPoint, Microsoft Visual Basic, Windows, và Windows NT hoặc thương
mại đăng ký- nhãn hiệu hoặc dấu của tập đoàn Microsoft ở Hoa Kỳ và/hoặc các quốc gia khác.
Sản phẩm khác và công ty tên đã đề cập chịu trách nhiệm có thể là nhãn hiệu của chủ sở hữu
tương ứng của họ.
Ví dụ, các tổ chức công ty, sản phẩm, miền tên, địa chỉ e-mail logo, mọi người,, địa điểm, và
những sự kiện miêu tả là thống kê chịu trách nhiệm. Chẳng có mối liên quan với bất cứ công ty
thực, tổ chức, sản phẩm, tên miền, địa chỉ e-mail, logo, người, nơi, hay sự kiện nào dự định
hay nên trở thành sự hưng thịnh.
Cuốn sách này thể hiện tác giả là ý kiến và quan điểm. Các thông tin bên trong cuốn sách này
là cung cấp với- bất cứ điều luật nào bảo, hoặc thể hiện, hàm ý bảo hành. Không phải là tác
giả, tập đoàn Microsoft, hay các nhà bán lẻ, hoặc nhà phân phối của nó sẽ chịu trách nhiệm cho
bất kỳ tổn gây ra hay được cho là gây ra do dùng trực tiếp hoặc gián tiếp của cuốn sách này.
Thành quả cả nhà biên tập: Engelman Linda và Robin Van Steenburgh Bộ sửa dự án: Devon
Musgrave Bộ phụ lục: Bill Myers Hiệu trưởng Nhà Xuất bản: Carl Diltz màn hình
phần cơ thể không. X10-53130
với vợ tôi, Ashlie, người không có gì để làm với lập trình máy tính
nhưng ai có liên quan đến làm phong phú thêm cả đời
trong nhiều cách hơn là tôi có thể mô tả

xa hơn lời khen


hoàn toàn
"Vassili mã hướng dẫn cho phong cách lập trình và xây dựng phần mềm." -Martin Refactoring
Fowler,
"Steve McConnell Mật mã là xin ½Iën Ph·n . . . cung cấp một nhanh theo dõi trong trí tuệ, đối
với các lập trình viên. . . .
Những cuốn sách của ông ấy rất hay đọc sách, và bạn không bao giờ quên rằng ông ta là phát
biểu từ khó-won kinh nghiệm cá nhân." -Jon lập trình, ngọc trai con Bentley, 2d ed.
"Đây là đơn giản nhất quyển sách về xây dựng phần mềm mà tôi đã từng biết đọc. Mỗi nhà
phát triển nên là người sở hữu một bản sao và đọc trang một để mỗi năm. Sau khi đọc nó mỗi
năm từ 9 năm, tôi vẫn tiếp tục học mọi thứ từ cuốn sách này!" - Robbins John, các ứng dụng
đối với Microsoft [correlation] gỡ lỗi NET và Microsoft Windows, "Hôm nay là phần mềm phải
được sống động và kiên cường, và bắt đầu với kỷ luật mã an toàn xây dựng phần mềm. Sau 10
năm, ở đó vẫn không tốt đẹp mã quyền lực còn hơn cả hoàn tất." -Michael Howard, kỹ thuật,
tập đoàn Microsoft an ninh;, viết mã an toàn đồng tác giả với
"một xét nghiệm toàn diện của chiến lược vấn đề đi vào là tạo ra một chương trình được cải
biến yếu tố di truyền. Làm việc bao gồm McConnell, chẳng hạn như các chủ đề như kiến trúc
và mã hóa, thử nghiệm, tiêu chuẩn hợp nhất, và bản chất của một sự khéo léo phần mềm."
-Grady Booch, vật thể giải pháp
"một bậc bách khoa toàn thư cho nhà phát triển phần mềm mã là hoàn thành bởi Steve
McConnell.
'thực tế. Sách hướng dẫn vẻ vang trong xây dựng phần mềm,' 850 trang cuốn sách này là
chính xác đó. Mục đích là để tuyên bố của nó thu hẹp khoảng cách giữa kiến thức của ngành
công nghiệp 'Những bậc thầy và pro- fessors' (Yourdon và Pressman, ví dụ) và tập luyện, và
thương mại chung 'để giúp bạn viết các chương trình tốt hơn trong khoảng thời gian ít hơn với
ít nhức đầu.' . . . Mỗi nhà phát triển nên là người sở hữu một bản sao của cuốn sách
McConnell. Kiểu dáng và nội dung của nó hoàn toàn là thực tế." -Loosley Chris, khách hàng
High-Performance/máy phục vụ
"Steve McConnell mã cuốn sách có ảnh hưởng sâu sắc là hoàn toàn là một trong những hoạt
động có thể tiếp cận được thảo luận- ing ở chi tiết các phương pháp phát triển phần mềm. . . ."
-Erik Bethke, và sản xuất phát triển trò chơi
"một mỏ thông tin hữu ích và những lời khuyên rộng lớn vấn đề trong việc thiết kế và sản xuất
các phần mềm tốt." -John Dempster, Phòng thí nghiệm máy tính: một hướng dẫn cho
Physiologists thực tiễn và Neuroscien- tists
"Nếu bạn nghiêm túc về việc bạn nâng cao kỹ năng lập trình, bạn nên được hoàn thành bởi
Steve mã McConnell." -Jean J. Labrosse, các hệ thống nhúng Khối nào: Ready-To hoàn toàn
và sử dụng trong mô- đun C
"Steve McConnell đã viết một trong những điều tốt nhất những cuốn sách về những công cụ
phát triển phần mềm độc lập của môi trường máy tính . . . Mã hoàn thành." -Kenneth Rosen,
Unix: Tham khảo hoàn chỉnh
"Cứ 30 tuổi, các bạn tình cờ bắt gặp một cuốn sách mà các mạch ngắn trường học của kinh
nghiệm và tiết kiệm bạn năm luyện ngục. . . . Tôi không thể đủ bày tỏ lòng biết ơn tốt cuốn sách
này thực sự là mã hoàn toàn là một.khá tệ tựa đề cho một công việc của chói." -Jeff
Duntemann, các kỹ thuật PC
"Báo chí Microsoft đã công bố những gì tôi xem xét là quyết định của cuốn sách-- struction
phần mềm. Đây là một cuốn sách đó của trên mỗi nhà phát triển phần mềm là trên kệ." -Keuffel
Warren, phát triển phần mềm
"lập trình viên mỗi nên đọc quyển sách xuất sắc này." -T. L. (Frank), Máy tính Pappas
"Nếu anh có hoài bão là một lập trình viên chuyên nghiệp, thì đây có thể là những người thông
minh đầu tư 35 đô la bạn sẽ không bao giờ làm. Đừng có dừng lại để đọc phần còn lại của bài
viết này: chỉ chạy ra ngoài và mua nó. McConnell là lấy các thông tin về- ed mục đích là để thu
hẹp khoảng cách giữa kiến thức của những chuyên ngành công nghiệp và phổ biến com-
mercial luyện tập. . . . Điều tuyệt vời là ông ta thành công." -Mateosian Richard, Micro
"Hoàn toàn mã IEEE nên bị bắt đọc cho bất cứ ai . . Trong phát triển phần mềm .." -Tommy
Usher, C người dùng trên Tạp chí
"tôi khuyến khích cái gậy cổ xa ra một chút hơn bình thường và khuyến khích, mà không res-
ervation, Steve McConnell Mật mã là hoàn tất. . . . Bản sao của tôi đã thay API người đàn ông
tham chiếu của tôi- uals như cuốn sách đó là gần gũi với bàn phím của tôi trong khi tôi làm
việc." -Jim Kyle, Windows tạp chí Công nghệ
"tấm viết nhưng tập sách khổng lồ được cho là tốt nhất quyển đã từng được viết trên khía cạnh
phần mềm của việc triển khai thực tiễn." -Tommy Usher, các hệ thống nhúng lập trình
"Đây là điều tốt nhất quyển sách về kỹ thuật phần mềm mà tôi chưa từng đọc." -Edward
Kenworth [correlation], Tạp chí
"Cuốn sách này EXE có vẻ xứng đáng để trở thành một câu chuyện cổ điển, và nên được việc
bắt buộc tất cả đọc sách để phát triển, và hầu hết là những- chịu trách nhiệm quản lý chúng."
-Peter Wright,

Mã hoàn thành rồi, bây giờ chương trình ấn bản thứ 2


0-7356-1967-0
Steve McConnell
nhìn sơ lược về nội dung
một phần tôi giăng nền tảng
1 phần mềm chào mừng đến với việc xây dựng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3 2 phép
ẩn dụ cho một giàu có hiểu biết về sự phát triển phần mềm . . . . .9 3 Dự luật này 2 lần, cắt một
lần: Ngược dòng điều căn bản đó. . . . . . . . . . . . . . . . . 23 4 chìa khóa quyết định xây dựng . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
phần II tạo ra mã High-Quality
5 thiết kế trong việc xây dựng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 6 các lớp
học làm việc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 High-Quality 7 thói
quen hàng ngày. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 8 lập trình phòng
thủ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 người lập trình Pseudocode 9 quá
trình . . . . . . . . . . . . . . . . . . . . . . . . . 215
phần III
10 trong vấn đề chung các biến số sử dụng biến số. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
em 11 sức mạnh của tên biến . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259 12 loại dữ liệu cơ
bản . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291 13 loại dữ liệu bất
thường . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
IV c¥c léi khai phần hành cao nhất
tổ chức Straight-Line 14 Mã. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sử dụng Conditionals 15,
347. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Cao 355 16 kiểm soát vòng
lặp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367 17 bất thường cấu trúc kiểm soát.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391 ppm (parts per million Table-Driven 18 phương
pháp. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411 19 vấn đề kiểm soát tướng
quân. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431
vii

viii mục lục


một phần cải tiến tới
20 Mã V Software-Quality nằm ngang. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463 21 Xây dựng
mang tính hợp tác. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479 22 Nhà Phát triển thử
nghiệm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Từ 499 $ 23 gỡ lỗi . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535 24 Refactoring . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . 563 25 Code-Tuning chiến
lược. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 587 26 Code-Tuning kỹ
thuật . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 609
phần lý do hệ thống
27 Cách vi kích cỡ ảnh hưởng đến xây dựng chương trình . . . . . . . . . . . . . . . . . . . . . . . . 649
28 quản lý việc xây dựng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 661 29 hội nhập . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 689 30 Công cụ lập
trình . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 709 người
tham gia VII điêu luyện
bố trí 31 và phần mềm phong cách. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 729
32 Self-Documenting mã . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 777 33 tính cách cá
nhân . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 819 34 sắc thái trong một sự khéo
léo phần mềm. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 837 35 nơi để tìm thông tin thêm . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . Ở sao Kim là 855

Mục Lục
hình dung chuyện . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . Xix
Acknowledgments .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
[correlation] xxvii
danh sách các danh sách kiểm tra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . xxix danh sách các bàn. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . Danh sách những số liệu xxxi .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.................
Tôi nằm xxxiii phần nền tảng
1 phần mềm chào mừng đến với việc xây dựng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.1 phần mềm .3 là xây dựng?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Tại sao
xây dựng phần mềm 1,2 quan trọng? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6. 3 cách đọc
quyển sách này. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2 phép ẩn dụ cho một giàu có hiểu biết về sự phát triển phần mềm . . . . .9
2.1 tầm quan trọng của các ẩn dụ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.2
Cách sử dụng phần mềm ẩn dụ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.3 phần
mềm thường thấy các ẩn dụ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3 2 lần, cắt một lần đo: Ngược dòng điều căn bản đó. . . . . . . . . . . . . . . . . 23
3. 1 quan trọng của điều căn bản đó . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.2 xác định loại phần mềm bạn đang làm việc trên. . . . . . . . . . . . . . . . . . . . . . . . 3.3 Problem-
Definition 31 Prerequisite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 Các Điều Kiện
Prerequisite 14 ki-lô-. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 Prerequisite
kiến trúc 3.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 3.6 lượng thời gian
ngược dòng điều căn bản đó . . . . . . . . . . . . . . . . . . . . . . 55
4 chìa khóa quyết định xây dựng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
4.1 lựa chọn của ngôn ngữ lập trình . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 4. 2 lập
trình hội nghị này . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 4.3 vị trí của các
anh về công nghệ vẫy tay . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 4,4 Phần chọn trong
các hoạt động ТРЕБУЕТСЯ ЛИ КРУПНОЕ
СТРОИТЕЛЬСТВО . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Microsoft đang quan tâm đến việc nghe bạn phản hồi về đây xuất bản như vậy, chúng ta có thể
cải thiện cuốn sách của chúng tôi liên tục và nguồn lực học cho anh. Tham gia vào 1 ngắn gọn
con nghĩ gì về cuốn sách này? Chúng tôi muốn nghe từ cậu! Cuộc khảo sát trực tuyến, có thể
tới thăm: Www.microsoft.com/learning/booksurvey/
ix.

x Mục Lục
phần II tạo ra mã High-Quality
5 thiết kế trong việc xây dựng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
5.1 thiết kế thách thức. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 5.2
chìa khóa khái niệm thiết kế . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
5,3 Khối nào: Heuristics thiết kế . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
5. 4 thói quen thiết kế. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
5,5 bình luận về hệ phương pháp phổ biến . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1 8
6 các lớp học làm việc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
lớp nền tảng 6.1: Các loại dữ liệu (ADTs trừu tượng) . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 6,2
Lớp tốt giao diện . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 6,3 thiết kế
và các vấn đề thực thi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 6. 4 lý do để tạo ra
một lớp học. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 Vấn đề Language-
Specific 6.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 6,6 ngoài các lớp học
gói: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
High-Quality 7 thói quen hàng ngày. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
7. 1 lý do hợp lệ để tạo ra một thói quen hằng
ngày . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 7,2 ở mức độ thói quen của thiết
kế. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Khoảng 168 7,3 Thói quen tốt
tên . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 7. 4 bao lâu một thói quen
thường nhật được không? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Số 173 7,5
Cách sử dụng các tham số thói quen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 7.6
những lý do đặc biệt trong việc sử dụng những chức năng . . . . . . . . . . . . . . . . . . . . . . . . . . .
181 7.7 lề thói hàng ngày và trực tiếp vĩ mô lề thói hàng ngày. . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . 182
8 lập trình phòng thủ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
8,1 Bảo Vệ chương trình của ông từ dữ liệu không hợp lệ. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Những khẳng định 188 8.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
....
8. 3 kỹ thuật Error-Handling Maryland... bên cạnh là quán ăn . . . . . . . . . . . . . . . . . . . . . . . . . . . .
................
8. 4 trường hợp ngoại lệ. 194 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . 198
8.5 tìm cách chương trình của ông để chứa những thiệt hại gây ra bởi các lỗi . . . . . . . . . . 203
gỡ lỗi Aids. 8. 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
8.7 Việc quyết định cách thức lập trình để rời khỏi phòng thủ nhiều trong mã sản
xuất . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 phòng thủ được về
phòng thủ 8.8 lập trình. . . . . . . . . . . . . . . . . . . . . . . . . . 210

Mục Lục ông tập


các quá trình lập trình Pseudocode 9 . . . . . . . . . . . . . . . . . . . . . . . . . 215
9.1 Tóm Lược của bước trong xây dựng các lớp học, và lề thói hàng ngày . . . . . . . . . . . . . . . . .
. . . . . . 9,2 Pseudocode 216 cho bọn chuyên
nghiệp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218 9.3 ây duựng nên lề
thói hàng ngày bằng cách sử dụng PPP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220 9.4 các
giải pháp thay thế cho PPP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Mất
đến 232
phần III
10 trong vấn đề chung các biến số sử dụng biến số. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
em
10.1 Dữ liệu việc biết chữ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..
238
10.2 làm biến tuyên bố dễ dàng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Là 239 10.3
Hướng dẫn cho việc khởi tạo trình tạo biến số. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
240
10,4 phạm vi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
10. 5 cố chấp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251 10,6
thời gian ràng buộc. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .252
10,7 mối quan hệ giữa các kiểu dữ liệu và các cấu trúc kiểm soát . . . . . . . . . . . . . . . . . 254 10.8
sử dụng mỗi cho mục đích chính xác một biến . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
11 sức mạnh của tên biến . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
11.1 Loại bằng cách chọn tên tốt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259 11,2 nêu rõ các
loại dữ liệu cụ thể . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264 tầng lợi tức này sức
mạnh của các hiệp định nêu tên . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270 f không chính
thức quy ước 11.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272 11.5 đạt tiêu chuẩn
quan trọng lắm. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279 màn hình
11.6tạo ra tên ngắn mà có khả năng đọc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282 11. 7 loại
tên để tránh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
12 loại dữ liệu cơ bản . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
12.1 con số nói chung. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292
12,2 Integers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Con số 293 12.3 Floating-Point . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
nhân vật và các sợi dây 12.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
12,5 biến lôgíc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301 12. 6 loại
được đánh Sốstyle name . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303
được 12,7 tên là hằng số . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Chỉ kiểm soát 307
12.8. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310
12.9 tạo ra các loại của mình (kiểu răng cưa) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311

xii mục lục


13 loại dữ liệu bất thường . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Các cấu trúc 13.1 hành cao
nhất . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13.2 hành cao
nhất chiêu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323
mức 13,3 dữ liệu toàn
cầu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335
phần IV
14 Tổ Chức mã Straight-Line c¥c léi khai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . , 347
14.1 lời trình bày mà phải có ở trong một trật tự cụ thể . . . . . . . . . . . . . . . . . . . . . . . . . . . . Lời
tuyên bố của ai yêu cầu chiếm 14,2, 347 không quan
trọng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
15 Conditionals sử dụng. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Khoản lãi suất 15.1 nếu c¥c léi khai cao 355 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . Cao 355 trường hợp c¥c léi khai 15,2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . 361
16 kiểm soát vòng lặp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367
16.1 chọn loại vòng lặp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367 16.2 kiểm
soát vòng lặp, . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373
16.3 tạo ra những vòng lặp dễ dàng-từ bên trong ra . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385
16.4 sự liên hệ giữa việc sử dụng các chu trình khép kín và . . . . . . . . . . . . . . . . . . . . . . . . . . . .
387
17 bất thường cấu trúc kiểm soát . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391 ppm (parts
per million
17.1 Nhiều trở về từ một thói quen hằng ngày . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
391 ppm (parts per million
tăng 17,2 đệ quy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393
thêm 17,3
tá"›i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398
quan điểm trên bất thường để gỡ huề đó cấu trúc kiểm soát. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. 408
18 Table-Driven phương pháp. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411
18.1 Tướng khi sử dụng các phương pháp Table-Driven loại . . . . . . . . . . . . . . . . . . 411
18.2 Bàn trực tiếp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413 18.3 Truy
cập phụ lục bàn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452 màn hình 18.4
Stair-Step bàn truy cập. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426 18. 5 ví dụ
khác của bàn Tra tên máy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Trong đó có 429
19 vấn đề kiểm soát tướng quân. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431
19.1 Bun biểu thức . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431 19.2 Báo
cáo hợp chất (dãy nhà) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443

Mục lục
19.3 xiii Null c¥c léi khai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444
làm cho 19,4 Chế ngự sâu lồng nhau một cách nguy hiểm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . Gấp đôi vì vụ làm ăn 19.5 một lập trình nền tảng 445: Lập trình có cấu trúc . . . . . . . . . . .
. . . . . . . . 454 cấu trúc và kiểm soát 19.6 sự phức tạp. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
...
Phần 9306456 - 9303425 V cải tiến tới
20 Software-Quality mã nằm ngang. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463
20.1 phần mềm đặc điểm của chất lượng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Các kỹ thuật 20.2 463 phần mềm để cải thiện chất lượng . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
466
20.3 tương đối hiệu quả của các kỹ thuật chất lượng. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469
Làm 20.4 khi đảm bảo chất lượng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473 20.5
những quy tắc tổng quát về chất lượng phần mềm. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474
21 Xây dựng mang tính hợp tác. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479
21,1 Tổng Quát về phát triển cộng tác động . . . . . . . . . . . . . . . . . . . . . . . 480 cặp 21.2 Lập trình
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483 chiếm 21,3 Chậm lại chính
thức. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485 21.4 các loại phát triển
cộng tác động . . . . . . . . . . . . . . . . . . . . . Đã vượt qua 492
22 Nhà Phát triển thử nghiệm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Vai trò của nhà phát triển 22.1 từ 499 $ thử nghiệm trên phần mềm chất
lượng . . . . . . . . . . . . . . . . . . . . . . . . . . . 500
22.2 được khuyến nghị sử dụng để tiếp cận với nhà phát triển thử
nghiệm . . . . . . . . . . . . . . . . . . . . . . . . . 503 túi của kiểm tra thủ thuật
22.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505
Lỗi điển hình 22,4 % trong số
đó . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..
Công cụ Test-Support 22.5 517. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
523 22.6 tỷ USD cho lĩnh vực bạn nâng cao thử nghiệm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . Phòng 528 22.7 giữ hồ sơ kiểm
tra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 529
23 gỡ lỗi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535
tổng quát về vấn đề gỡ lỗi kết quả ghi nhận về dây thần kinh . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . 535 23.2 tìm 1 khuyết điểm. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . 540 mức 23,3 Sửa 1 khuyết điểm nào . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .550
23,4 những lý do trong tâm lý gỡ lỗi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Công cụ 554 23.5 gỡ
lỗi-Not-So rất rõ ràng và sự rõ ràng. . . . . . . . . . . . . . . . . . . . . . . . Lý tưởng là 556
xiv mục lục
24 Refactoring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 563
24.1 phần mềm loại tiến hóa. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Giới thiệu về
Refactoring 24.2 564. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565 24,3
Refactorings cụ thể. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 571 lục 24.4
Refactoring an toàn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 579
24,5 Chiến lược Refactoring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 582
25 Code-Tuning chiến lược. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 587
tăng 25.1 khái quát về hiệu suất . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 588
25.2 Mã Giới thiệu về điều chỉnh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25.3 591
loại chất béo và Molasses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 597 25.4
đánh giá. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 603 25.5
accelerated
innovation) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 605 25.6
Tóm Lược của pháp tiếp cận mã điều chỉnh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 606
26 Code-Tuning kỹ thuật . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 609
26.1 Logic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 610
26.2 khép kín. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 616
26.3 Dữ liệu chuyển dạng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 624
26.4 biểu thức . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 334
587 26,5% tại lề thói hàng ngày . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . 639
26.6 Recoding trong một ngôn ngữ Low-Level . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
64026.7 Càng nhiều thứ đã thay đổi, khi họ càng giữ nguyên không đổi . . . . . . . . . . . . . . . . .
643
phần lý do hệ thống
27 Cách vi kích cỡ ảnh hưởng đến xây dựng chương trình . . . . . . . . . . . . . . . . . . . . . . . .
Lý do mà em... thông tin liên lạc và kích cỡ
649 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 650 loạt kích cỡ dự án từ
27,2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ade 651 ảnh hưởng của kích
cỡ 27.3 Dự án có lỗi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ade 651 sẽ giảm 27.4
ảnh hưởng của kích cỡ dự án về năng suất. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
27.5 ảnh hưởng của dự án phát triển cỡ hoạt động . . . . . . . . . . . . . . . . . . . . . . . . . 654

Mục Lục xvname


28 quản lý việc xây dựng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 661
28.1 khuyến khích mã hóa tốt. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 662 chiếm
28,2 Quản Lý cấu hình. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 664 28.3 ước
lượng một lịch xây dựng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 671 thước đo
28.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 677 28.5 chữa các
lập trình viên khi người ta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 680 28.6 Trình quản
lý quản lý . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Đã hỏi 686
29 hội nhập . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 689
thương mại đạt 29.1 quan trọng của việc tích hợp tiếp
cận. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tần số 689 Tích hợp 29.2-hoặc tăng dần từ giai
đoạn? . . . . . . . . . . . . . . . . . . . . . . . . . 691 29.3 tăng dần các chiến lược tích hợp . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . 694 29.4 xây dựng và thử nghiệm khói hàng
ngày . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 702
30 Công cụ lập trình . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 709 người
các công cụ thiết kế 30.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Công cụ Source-Code .710 30.2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
710 Công cụ Executable-Code 30.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
716 30.4 Môi trường Tool-Oriented . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 720 tòa
nhà của mình lập trình 30.5 Công cụ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Công cụ
Fantasyland 721 30.6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 722
phần VII điêu luyện
bố trí 31 phần mềm và phong cách. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Bố trí 31.1 729 những yếu tố cơ
bản . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Các kỹ thuật bố trí 31.2 730. . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 736
31.3 phong cách bố trí. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 738
31.4 đưa ra cấu trúc kiểm soát . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tương
đương $ 745 nắm giữ 31.5 đưa ra lời tuyên bố cá nhân . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . 753 31.6 đưa ra lời bình luận . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
763 31,7 ra lề thói hàng ngày . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 766
31.8 đưa ra các lớp học . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 768

xvi Mục Lục


mã Self-Documenting 32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 777
32.1 Tài liệu từ bên ngoài . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 777
32.2 phong cách lập trình như tài liệu hướng dẫn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32.3
778 bình luận hay không bình luận . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 781 32.4 chìa
khóa để bình luận hiệu quả . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 785 bình luận
của 32.5 kỹ thuật. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 792
32.6 Tiêu chuẩn IEEE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 813
33 tính cách cá nhân . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 819
, 33.1 nhân vật không phải là vấn đề của cá nhân khỏi đề
tài? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 820 33.2 trí tuệ và sự khiêm nhường. . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 821 bị vạ lây tò mò . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 822 33.4 Trí Tuệ sự trung
thực . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 826 33.5 giao tiếp và hợp tác
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 828 đã tăng 33,6 Sự sáng tạo và có kỷ
luật. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 829 33.7 lười biếng . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 830 33.8 nét đặc trưng mà không
quan trọng Như bạn có thể nghĩ rằng . . . . . . . . . . .
Thói quen 33.9 830 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
833
34 sắc thái trong một sự khéo léo phần mềm. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 837
34.1 chinh phục sự phức tạp. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 837
34.2 Chọn người của quá trình. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
839 34.3 viết các chương trình cho mọi người, Thứ Hai máy tính đầu tiên . . . . . . . . . . . . . . . . . .
. . . 841 Chương Trình 34.4 vào ngôn ngữ của mình, không phải trong
nó. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 843 34.5 tập trung sự chú ý của bạn với sự giúp đỡ
của hội nghị này. . . . . . . . . . . . . . . . . . . . . . 844 Chương Trình 34.6 về mặt của vấn đề miền. . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . 845 34.7 canh chừng rơi đá . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . Mặt khoảng 34.8 Iterate 848, lặp đi lặp lại, và một lần
nữa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 850 Nhà ngươi Rend nhẹ lên 34,9 phần mềm và
tôn giáo xẻ nghé . . . . . . . . . . . . . . . . . . . . . . . . 851

Mục Lục xvii


35 nơi để tìm thông tin thêm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ở sao Kim là 855
35,1 Thông tin về xây dựng phần mềm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Chủ đề 35.2 856
Ngoài việc xây dựng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 857...
35.3 Periodicals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 859
35.4 Nhà phát triển phần mềm một kế hoạch cho việc đọc
sách. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 860 35.5 tham gia một tổ chức chuyên nghiệp .
...................................
Bibliography 862. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Chỉ số 863 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
885
Microsoft đang quan tâm đến việc nghe bạn phản hồi về đây xuất bản như vậy, chúng ta có thể
cải thiện cuốn sách của chúng tôi liên tục và nguồn lực học cho anh. Tham gia vào 1 ngắn gọn
con nghĩ gì về cuốn sách này? Chúng tôi muốn nghe từ cậu! Cuộc khảo sát trực tuyến, có thể
tới thăm: Www.microsoft.com/learning/booksurvey/
hình dung chuyện
khoảng cách giữa những kỹ thuật phần mềm tốt nhất thực tiễn và luyện tập trung bình là rất
rộng có lẽ rộng lớn hơn trong bất kỳ kỷ luật kỹ thuật. Một công cụ disseminates kinh nghiệm tốt
sẽ trở nên quan trọng.
- Fred Brooks
mục đích riêng của tôi liên quan đến viết quyển sách này đã được để thu hẹp khoảng cách giữa
kiến thức của những chuyên ngành công nghiệp và các giáo sư một mặt và commer chung- cial
luyện tập một bên. Nhiều kỹ thuật lập trình mạnh mẽ trốn trong tạp chí và các bài báo khoa học
trong nhiều năm trước khi xuống lập trình chảy ra công chúng.
Mặc dù dẫn cạnh luyện tập đã phát triển phần mềm tiên tiến nhanh chóng trong những năm
gần đây, việc thực thì chưa. Rất nhiều chương trình vẫn còn một con rệp, đã muộn rồi, và ngân
sách, và nhiều người không đáp ứng yêu cầu của người dùng. Các nhà nghiên cứu trong cả
các ngành công nghiệp phần mềm và thiết lập học thuật đã phát hiện ra hiệu quả mà điều này
loại bỏ hầu hết những vấn đề đã được lập trình phổ biến từ những năm 70. Bởi vì những hoạt
động này thường không báo cáo bên ngoài các trang của chuyên biệt các tập san kỹ thuật cao,
tuy nhiên, hầu hết các tổ chức đang lập trình vẫn chưa sử dụng họ hôm nay.
Nghiên cứu đã tìm được điều đó thì thường sẽ mất từ 5 đến 15 năm hoặc hơn trong một
nghiên cứu phát triển- ment để làm cách đi vào thực hành (Raghavan thương mại và Chand
năm 1989, năm 1995, Parnas Rogers năm 1999). Sổ tay Phã-m tắt quá trình này, làm cho
các khám phá quan trọng có sẵn cho các lập trình viên bây giờ trung bình.
Ai nên đọc cuốn sách này?
Nghiên cứu và trải nghiệm lập trình đựng trong sổ tay này sẽ giúp bạn tạo ra phần mềm chất
lượng cao hơn và làm nhanh hơn và các vấn đề với ít. Cuốn sách này sẽ cho bạn cái nhìn sâu
sắc về tại sao bạn đã có vấn đề trong quá khứ và sẽ cho bạn biết cách làm thế nào để tránh
được những vấn đề trong tương lai. Các thức lập trình mô tả ở đây sẽ giúp bạn giữ những dự
án lớn trong tầm kiểm soát và giúp bạn có thể duy trì và sửa đổi thành công như phần mềm
những đòi hỏi của dự án của ông thay đổi.
Trải qua các lập trình viên
sổ tay phục vụ này đã trải nghiệm lập trình viên đã muốn toàn diện, dễ sử dụng- hướng dẫn
cho phát triển phần mềm. Bởi vì cuốn sách này tập trung vào việc xây dựng, nhất quen thuộc
một phần của cuộc sống phần mềm, nó khiến mạnh mẽ chu kỳ phát triển phần mềm kỹ thuật
cũng dễ hiểu thôi tự dạy các lập trình viên cũng như để lập trình viên với huấn luyện chính
thức.
xix

xx hình dung chuyện


dẫn
nhiều kỹ thuật dẫn có mã sử dụng kỹ thuật hoàn thành giáo dục ít chương trình kinh- mers trên
các nhóm của họ. Bạn cũng có thể sử dụng nó để lấp đầy sự kiến thức riêng các khoảng trống.
Nếu bạn đang có kinh nghiệm lập trình viên, bạn có thể không đồng ý với tất cả kết luận của tôi
(và tôi có thể là ngạc nhiên nếu chúng), nhưng nếu bạn đọc cuốn sách này và nghĩ về vấn đề
này, chỉ có mỗi hiếm khi sẽ có ai đó mang lên xây dựng một vấn đề khác mà các bạn chưa
từng được xem xét.
Self-Taught lập trình viên
nếu bạn không có nhiều huấn luyện chính thức, bạn được chia sẻ. Khoảng 50,000 nhà phát
triển mới nhập mỗi năm (BLS nghề nghiệp năm 2004, Hecker năm 2004), nhưng chỉ có khoảng
35.000 liên quan đến phần mềm độ được trao mỗi năm (NCES 2002). Từ những đường số 6-
ures đó là một chuyến bay ngắn đến kết luận rằng nhiều lập trình viên không nhận được một
giáo dục chính trong phát triển phần mềm. Tự dạy các lập trình viên được tìm thấy trong những
nhóm emerg- ing chuyên nghiệp-kỹ sư, kế toán, các nhà khoa học, giáo viên, và nhỏ- chủ
doanh nghiệp-ai như một phần của chương trình công ăn việc làm nhưng ai làm ô xem không
nhất thiết phải là bản thân mình như chương trình. Bất kể về mức độ educa--đổi lập trình của
bạn, điều này có thể đưa cho bạn sổ tay cái nhìn sâu sắc về thức lập trình hiệu quả.
Sinh viên
các lập trình viên counterpoint đến với kinh nghiệm nhưng ít sự huấn luyện tươi chính thức tốt
nghiệp đại học. Tốt nghiệp gần đây thường giàu lý thuyết kiến thức nhưng người nghèo trên
thực tế hiểu biết rằng chúng ta sẽ đi vào tòa nhà sản xuất các chương trình. Kinh nghiệm về sự
thực tế của mã hóa tốt thường đã được truyền đi chậm điệu nhảy của bộ lạc của phần mềm
phục nghi lễ truyền thống là kiến trúc sư, dẫn tới, các nhà phân tích dự án, và nhiều chương
trình- mers kinh. Thậm chí thường xuyên hơn, đó là sản phẩm của lập trình viên là thử nghiệm
cá nhân và lỗi. Cuốn sách này là một giải pháp thay thế cho các hoạt động chậm của trí tuệ
potlatch truyền thống. Nó kéo những bí quyết cùng nhau và hiệu quả các chiến lược phát triển
previ- ously có sẵn phần lớn bằng cách đi săn và thu thập từ kinh nghiệm của người khác. Đó
là một tay lên cho các học sinh đang chuyển từ một môi trường học thuật để một tay chuyên
nghiệp.
Còn nơi nào khác có thể bạn tìm thông tin này?
Cuốn sách này Engine tổng hợp các kỹ thuật xây dựng từ nhiều nguồn. Ngoài việc nằm rải rác,
nhiều rộng rãi cước sự khôn ngoan về việc xây dựng đã đã nằm đó bên ngoài các nguồn viết
cho năm (1997Hildebrand năm 1989, McConnell a).
Không có gì bí ẩn về hiệu quả năng lượng lớn công nghệ cao- niques lập trình được sử dụng
bởi các lập trình viên chuyên gia. Theo ngày qua ngày đột ngột của nghiến răng dự án gần đây
nhất, tuy nhiên, vài chuyên gia dành chút thời gian để chia sẻ những gì đã học được. Conse-

hình dung chuyện xxi


quently, lập trình viên có thể gặp khó khăn trong việc tìm kiếm một nguồn cung cấp thông tin lập
trình.
Những kĩ thuật mô tả trong cuốn sách này lấp đầy sự trống rỗng... sau khi số dư nợ và lập trình
cấp cao văn bản nào. Sau khi ông đã đọc Giới thiệu về Java, tiến bộ Java, và nâng cao cấp cao
Java, làm bạn đọc sách để biết thêm về lập trình?
Bạn có thể đọc sách về các chi tiết của Intel hoặc Motorola phần cứng, Microsoft thắng- dows
hay Linux chức năng điều hành, hoặc một ngôn ngữ lập trình-các bạn không thể dùng một ngôn
ngữ chương trình hoặc trong một môi trường mà không có tham khảo về chi tiết. Nhưng đây là
một trong những vài cuốn sách đó thảo luận U.S. phầm mềm lập trình. Một số có lợi lập trình
aids đang hoạt động mà bạn có thể sử dụng bất chấp những môi trường hay bạn làm việc trong
ngôn ngữ. Quyển sách khác thường bỏ bê prac- tices chẳng hạn, đó là lý do tại sao
concentrates cuốn sách này lên chúng.
Thông tin trong cuốn sách này được cất từ rất nhiều nguồn thông tin, như ta thấy bên dưới.
Cách duy nhất để giành được thông tin bạn sẽ tìm thấy trong sổ tay này là thông qua một núi
cày cấy sách và vài trăm các tập san kỹ thuật và sau đó thêm vào một số lượng đáng kể của
trải nghiệm trong thế giới thực. Nếu ngài đã làm tất cả điều đó, bạn vẫn có thể được hưởng lợi
từ cuốn sách này là thu thập thông tin ở một chỗ cho dễ dàng tham chiếu- ence.
Trải nghiệm chuyên nghiệp phần mềm khác sách
ngôn ngữ lập trình
xây dựng
công nghệ tạp chí bài viết cuốn sách này chỉ tới
chìa khóa Sổ tay về lợi ích của việc
nền bất cứ thứ gì anh, sổ tay này có thể giúp bạn viết các chương trình tốt hơn trong khoảng
thời gian ít hơn và ít hơn với nhức đầu.
Xin ½Iën ph·n-xây dựng phần mềm này sổ tay tham chiếu tướng khía cạnh về xây dựng thảo
luận U.S. như chất lượng và phần mềm để suy nghĩ về việc lập trình. Nó yên tâm cốt lõi này
xây dựng những chi tiết như bước trong xây dựng các lớp học, mọi vấn đề của sử dụng dữ liệu
và các cấu trúc kiểm soát, gỡ lỗi, refactoring, mã và công nghệ cao- niques tinh chỉnh và chiến
lược. Bạn không cần phải đọc trang một để tìm hiểu về những top- icsstencils. Quyển sách
được thiết kế để làm cho nó dễ dàng để tìm thông tin cụ thể.

xxii ông hình dung chuyện


sẵn sàng sử dụng danh sách kiểm tra cuốn sách này bao gồm hàng tá danh sách kiểm tra mà
bạn có thể dùng để đánh giá các phần mềm, phương pháp thiết kế kiến trúc, tầng lớp chất
lượng, và quen thuộc quá tên biến, cấu trúc kiểm soát, xét nghiệm, trường hợp, bố trí và nhiều
thứ khác nữa.
Bộ sổ tay này mô tả một số thông tin của chạy có sẵn các kỹ thuật, mà rất nhiều trong số đó
chưa đã làm cho nó sử dụng phổ biến. Bởi vì cuốn sách này vẽ từ cả hai tập luyện và nghiên
cứu, các kỹ thuật đó miêu tả sẽ vẫn có ích trong nhiều năm.
Số lớn các quan điểm trên phát triển phần mềm cuốn sách này cũng là cơ hội cho bạn vượt lên
trên những cuộc chiến của những hàng ngày lửa chiến đấu và biết được việc gì và cái gì
không.
Vài tập các lập trình viên có thời gian để đọc qua hàng trăm sách và tạp chí bài viết đã được
cất vào sổ tay này. Nghiên cứu và trải nghiệm thế giới- tụ tập thực vào sổ tay này theo chỉ định
của bạn và kích thích nghĩ- ing về dự án của ông, cho phép các bạn hãy hành động chiến lược
để bạn không phải chiến đấu cùng battles lặp đi lặp lại.
Sự vắng mặt của chiến dịch quảng cáo một số phần mềm sách chứa 1 gram cái nhìn sâu sắc
trong 10 swathed gram của chiến dịch quảng cáo. Cuốn sách này quà cân bằng các cuộc thảo
luận về kỹ thuật mỗi là điểm mạnh và yếu của bạn. Bạn biết những đòi hỏi của dự án đặc thù
của bạn tốt hơn bất cứ ai khác. Cuốn sách này cung cấp thông tin khách quan bạn cần để đưa
ra quyết định đúng đắn về hoàn cảnh của cá nhân bạn.
Khái niệm áp dụng được cho ngôn ngữ thường thấy nhất cuốn sách này mô tả cách bạn có thể
sử dụng để tận dụng hết nguồn cái ngôn ngữ mà bạn đang sử dụng, cho dù nó là C++, C#
Language, Java, Microsoft Visual Basic, hoặc ngôn ngữ tương tự khác.
Numerius ví dụ mã quyển sách hằng chứa gần 500 ví dụ về mã tốt và xấu. Tôi đã bao gồm
nhiều ví dụ bởi vì, cá nhân tôi, tôi học tốt nhất từ- ples thi không. Tôi nghĩ các lập trình viên học
tốt nhất đó.
Những ví dụ trong nhiều ngôn ngữ bởi vì thông thạo nhiều hơn một ngôn ngữ thường là một
bước ngoặt trong sự nghiệp của một lập trình viên chuyên nghiệp. Một khi là một lập trình viên
nhận ra rằng các nguyên tắc lập trình vượt xa cú pháp của ngôn ngữ nào đặc trưng, cửa vung
tới kiến thức thực sự việc mở tạo nên sự khác biệt trong chất lượng và pro- ductivity.
Để làm cho nhiều-gánh nặng như ánh sáng ngôn ngữ càng tốt, tôi đã tránh được lan- nghĩa là
tính năng N_ gôn ngữ ngoại trừ nơi chúng được thảo luận đặc biệt. Bạn không cần đến dưới-
đứng mỗi nuance của mã đã đầy đủ để hiểu được những điểm họ đang tạo ra. Nếu anh tập
trung vào điểm mấu chốt ở đây được minh họa, bạn sẽ thấy rằng bạn có thể đọc mã xem- ít
của ngôn ngữ. Tôi đã cố gắng làm công việc của bạn thậm chí dễ hơn bởi những signifi
annotating- ko để phần ví dụ.
Truy cập vào những nguồn thông tin của cuốn sách này thu thập nhiều thông tin có sẵn trên xây
dựng phần mềm, nhưng nó không phải là một người từ cuối cùng. Trong suốt cả

hình dung chuyện xxiii


chương, "Tài Nguyên thêm phần" mô tả và bài viết quyển sách khác bạn có thể đọc như bạn
theo đuổi những chủ đề bạn tìm thấy thú vị nhất.
cc2e.com/1234 trang web được cập nhật danh sách kiểm tra, Cuốn sách sách tạp chí, bài viết,
Web liên kết và các nội dung khác đang được cung cấp trên trang web của một người bạn ở
cc2e.com. Để truy cập vào các thông tin liên quan đến hoàn thành, 2d mã ed., nhập cc2e.com/
theo sau bốn chữ mã, một ví dụ về được minh họa bằng lề trái. Những trang web này chỉ tới
xuất hiện khắp.
Sổ tay về lý do tại sao điều này lại có viết
về cần để phát triển làm bằng tay ghi lại kiến thức về devel- opment hiệu quả là tốt công nhận
trong phần mềm-engineering cộng đồng. Một báo cáo của máy tính bảng khoa học và công
nghệ phát biểu rằng sự lợi ích lớn nhất trong phần mềm độc hại-- phát triển mềm chất lượng và
năng suất sẽ đến từ codifying thống nhất, và phân phát, điều đã có kiến thức về sự phát triển
phần mềm hoạt động hiệu quả (1997CSTB năm 1990, McConnell a). Bảng kết luận rằng chiến
lược để lây lan những kiến thức đó nên được xây dựng trên các khái niệm về kỹ thuật phần
mềm làm bằng tay.
Chủ đề của việc xây dựng đã bị xa lánh
ở một giai đoạn phát triển phần mềm mã hóa và được cho là một và giống nhau.
Nhưng các hoạt động khác trong vòng đời phát triển phần mềm được xác định, một vài trong số
những người giỏi nhất trong lĩnh vực này đã dành thời gian của họ phân tích và tranh cãi phạm
chuyên nghiệp đấy- ods quản lý dự án của các điều kiện,, thiết kế, và thử nghiệm. Đi đâu mà
vội để nghiên cứu những con mới phân biệt được các vùng có để lại xây dựng như ngu dốt mã
người anh em họ của sự phát triển phần mềm độc hại.- mềm
Các cuộc thảo luận về việc xây dựng cũng đã được tôi thì đang rất những gợi ý trị- xây dựng
như một khác biệt nhau ing phát triển phần mềm hoạt động -- cấu trúc đó cũng phải non nớt
được coi như một giai đoạn khác nhau. Trong thực tế, các hoạt động phần mềm và giai đoạn:
không phải được đặt ở bất kỳ mối quan hệ đặc biệt với nhau, và nó thực sự hữu ích để thảo
luận về hoạt động của việc xây dựng cho dù phần mềm hoạt động khác là mỗi- hình thành
trong những giai đoạn trong lần lặp lại, hay ở một cách khác.
Quan trọng là
một lý do xây dựng công trình xây dựng đã bị xa lánh bởi các nhà nghiên cứu và nhà văn là lỗi
chính tả, chụp ý tưởng rằng so với các hoạt động phát triển phần mềm, xây dựng là một quá
trình cơ khí, nó cho phép tương đối ít cơ hội cho sự tiến bộ đó. Noth- ing có thể thay đổi sự
thật.

xxiv
mã hình dung chuyện thường chiếm về xây dựng 65 phần trăm của những nỗ lực này trên các
dự án nhỏ và 50 phần trăm trên các dự án trung bình. Việc xây dựng chiếm khoảng 75% những
sai sót trên các dự án nhỏ và từ 50 đến 75 phần trăm trên trung bình và dự án lớn. Bất kỳ hoạt
động chiếm 50 đến 75% những sai sót quà tặng một cơ hội cho sự phát triển khá rõ ràng.
(Chương 27 chứa nhiều chi tiết về những thống kê này.)
Một số nhà bình luận đã chỉ ra rằng mặc dù việc xây dựng các lỗi chiếm một tỉ lệ trong tổng số
các lỗi, xây dựng các lỗi thường đắt đỏ để sửa chữa hơn những do nhu cầu và kiến trúc, những
gợi ý ở đây là, chúng là do đó ít quan trọng. Yêu cầu lỗi xây dựng ít tốn kém hơn để giải quyết
là đúng sự thật nhưng gây hiểu nhầm vì chi phí không sửa chúng có thể vô cùng cao. Các nhà
nghiên cứu đã phát hiện ra rằng lá"—i tạo Mã qui mô nhỏ chiếm một phần mềm đắt
nhất- phần mềm độc hại lỗi mọi thời đại, với chi phí chạy vào hàng trăm triệu đô la (Wein- berg
phải năm 1983, SEN năm 1990). Một bộ tốn bao nhiêu tiền để làm rõ ràng không ám chỉ rằng
định chúng nên được ưu tiên thấp.
Sự mỉa mai trong sự thay đổi của tập trung đi từ việc xây dựng là xây dựng là hoạt động duy
nhất đó là được đảm bảo là xong. Yêu cầu có thể giả định thay vì devel- oped; kiến trúc có thể
được bỏ bê trong nhiều năm qua chứ không phải được đặt ra; và xét nghiệm có thể được viết
tắt là hoặc cùng băng chớ không phải là hoàn toàn đã lập kế hoạch và bị xử tử. Nhưng nếu có
một chương trình, phải có xây dựng, và đó là điều khiến cho việc xây dựng một khu vực phát
triển nòi giống trong đó duy nhất để cải thiện phát triển hoạt động này.
Không thể so sánh có
ánh sáng của việc xây dựng hiển nhiên, tôi đã tin là quan trọng khi tôi thai ghén cuốn sách này
một người khác sẽ làm đã có viết một cuốn sách về xây dựng prac- tices hiệu quả. Cần có cuốn
sách về cách lập trình dường như một cách hiệu quả rõ ràng. Nhưng tôi nhận ra rằng chỉ một
vài cuốn sách đã được viết về công trình xây dựng và sau đó chỉ trên phần về đề tài này. Một
số người đã được viết 15 năm hoặc hơn trước đó - li- atively và sử dụng ngôn ngữ nghĩa như
ALGOL, PL/I, và Smalltalk Ratfor,. Một số người đã được viết bởi các giáo sư, những người
không làm việc trên sản xuất mã. Các giáo sư có viết về kỹ thuật mà làm việc cho sinh viên dự
án này, nhưng họ thường không có nhiều ý tưởng về việc làm thế nào các kỹ thuật sẽ diễn ra
trong môi trường phát triển toàn diện. Vẫn còn quyển sách khác trumpeted các tác giả yêu thích
mới nhất của hệ phương pháp nhưng phớt lờ kho trưởng thành thói quen khổng lồ đã chứng tỏ
hiệu quả của chúng theo thời gian.
Khi các nhà phê bình nghệ thuật kết hợp lại với nhau một cách ngắn gọn, tôi không thể tìm thấy
cuốn sách đã thậm chí bất cứ cố gắng nắm bắt cơ thể của prac-
họ nói về hình thức và các kỹ thuật tical có sẵn từ kinh nghiệm chuyên nghiệp, nghiên cứu công
nghiệp, và aca- cấu trúc và ý nghĩa.
Khi những nghệ sĩ cùng nhau demic làm việc. Cuộc thảo luận cần được nuôi dưỡng để cuộc
hẹn cho hiện thời
họ nói về nơi bạn ngôn ngữ lập trình, hướng đối tượng lập trình, và dẫn- edge phát triển-
có thể mua rẻ ment turpentine. buổi tập. Dường như nó rõ ràng là một cuốn sách về việc lập
trình cần phải viết - Pablo Picasso bởi người cũng hiểu biết về lý thuyết nghệ thuật nhưng ai
cũng đang xây dựng mã sản xuất đủ để biết trân trọng tiểu bang của thực tiễn. Tôi

hình dung chuyện xxv


được thụ thai cuốn sách này như một cuộc thảo luận đầy đủ của mã-từ một lập trình viên xây
dựng cho người khác.
Tác giả ghi chú
tôi chào đón yêu cầu chuyện về những chủ đề của bạn đã thảo luận trong cuốn sách này, các
báo cáo lỗi của bạn, hoặc các đối tượng liên quan. Xin hãy liên lạc với tôi ở
Stevemcc@construx.com, hoặc đến trang web của tôi tại www.stevemcconnell.com.
Bellevue, đài tưởng niệm Washington ngày, năm 2004
Microsoft học
mỗi nỗ lực hỗ trợ kỹ thuật đã được tạo ra để đảm bảo sự chính xác của cuốn sách này.
Microsoft cung cấp giáo huấn cho sách báo chí qua World Wide Web tại địa chỉ sau đây:
Http://www.microsoft.com/learning/support/
để kết nối trực tiếp đến Microsoft thức và nhập một truy vấn xem- ing một câu hỏi hay vấn đề
khác mà các bạn có thể đã đi:
Http://www.microsoft.com/learning/support/search.asp,
nếu bạn có những lời bình luận, những câu hỏi, những ý tưởng về cuốn sách này, xin gửi
chúng đến báo chí Microsoft bằng cách sử dụng các phương pháp nào sau đây:
qua đường bưu điện thư:
Microsoft bấm mã Các Quã½ vá"‹: 2E biên tập viên xin ½Iën Ph·n 1 cách Microsoft
Redmond, Wall-E. 98052-6399
e-mail:
Mspinput@microsoft.com
Acknowledgments
một cuốn sách thực sự chưa bao giờ được viết bởi một người (một ít nhất là không phải
chuyện của t những quyển sách). Một phiên bản thứ hai là thậm chí nhiều hơn một công việc
hết sức tập thể.
Tôi muốn cám ơn những người đã đóng góp duyệt xét bình luận về những phần đáng kể của
cuốn sách: Hákon Ágústsson, Scott Ambler, sẽ Barns, William D. Bartholomew, Ian Brockbank
Bergstrom Lars,, Bruce người giúp việc, Jay Cincotta, Alan Cooper, Bob Corwin Corrick, Al,
Jerry Deville, Jon mái hiên, Edward Estrada, Steve, Owain Griffiths Gouldstone, Matthew
Harris, Michael Howard, Andy đi săn, Kevin Hutchison, Rob Jasper, Stephen Jenkins, Ralph
Johnson và phần mềm của kiến trúc nhóm nghiên cứu tại đại học Illinois, Marek Konopka, Jeff
Langr, Andy, Mitica Manu Lester, Steve McCaughan Mattingly, Gareth, Robert McGovern, Scott
Meyers, Gareth Morgan, Matt Pflug Peloquin, Bryan, Jeffrey Richter, Steve Rinn, Doug
Rosenberg, Brian St. Pierre, Diomidis Spinellis, Matt Stephen của Dave Thomas, Andy
Thomas-Cramer, John, dậy đi Pavel Vozenilek Vlissides, Denny Woolley Williford, Jack, Và Dee
Zsombor.
Hàng trăm người đọc gửi lời bình luận về phiên bản đầu tiên, và thêm nhiều gửi lời bình luận về
những cá nhân ấn bản thứ 2. Cám ơn cho tất cả mọi người đã mất thời gian để chia sẻ reac-
tions đến cuốn sách trong nhiều dạng khac nhau.
Đặc biệt cảm ơn đến những phần mềm Construx nhà phê bình chính thức kiểm tra toàn bộ
manu- tập lệnh: Jason Hills, Bradey Honsinger Abdul Nizar, Tom, và Pamela Perrott Reed. Tôi
thực sự ngạc nhiên với việc xem xét lại của họ là chu đáo, đặc biệt là nếu nghĩ về bao nhiêu đôi
mắt scruti- nized quyển sách trước khi họ bắt đầu làm việc trên nó. Cám ơn cũng để Bradey,
Jason, và cho những đóng góp của họ để Pamela cc2e.com những trang web.
Làm việc với Devon, biên tập viên dự án cho Musgrave cuốn sách này, đã được một biệt đãi.
Tôi đã làm việc với nhiều nhà biên tập tuyệt vời trên dự án khác, và đứng ra như espe Devon-
cially chu đáo và dễ dàng để làm việc với. Cám ơn, Devon! Nhờ cô Linda Engleman đã đấu
tranh cho phiên bản thứ hai; cuốn sách này không xảy ra mà không có cô ấy. Cám ơn cũng cho
phần còn lại của Microsoft báo chí nhân viên, bao gồm Robin Van Elden Steenburgh, Nelson,
Carl Diltz, Joel Panchot, Patricia Masserman, Bill Myers, nhà Resnick Norfleet Sandi, Barbara,
James Kramer, và Prescott Klassen.
Tôi muốn nhớ những nhân viên đó được xuất bản báo chí Microsoft phiên bản đầu tiên: Alice
Smith, Arlene Myers, Barbara Runyan, Carol Luke, Connie chút, Dean Sherlock Holmes, Eric
Stroo, Erin O'Connor, Jeannie McGivern, Jeff Carey, Jennifer Harris, Jennifer Vick, Judith Butler
Bloch, Katherine Erickson, Kim Eggleston, Lisa Sandburg, Lisa, Margarite Hargrave Theobald,
Mike, Pat Forgette Halvorson, Peggy Herman, Ruth Brunsman Pettis, Sally, Shawn Peck, Steve
Mur- ray, Wallis Bolz, và Zaafar
xxvii
xxviii Acknowledgments Hasnain.
cảm ơn những góp phần vào nhà phê bình đáng kể phiên bản đầu tiên: Corwin Al, Bill, Brian
Daugherty Kiestler, Dave Moore, Greg, Hank Meuret Hitchcock rồi, Jack, Joey Wyrick Woolley,
Margot trang, Mike Klein, Mike, Pat Forman Zevenbergen, Peter Pathe, Robert L.
thủy tinh, Tammy Forman, Tony Pisculli, và Wayne Beardsley. Đặc biệt nhờ Tony Garland của
ông ấy cho xem xét lại phải làm các xét: Với 12 năm' khuynh hướng nhận thức muộn, Tôi đánh
giá cao hơn bao giờ hết cách tional excep- Tony vài ngàn ôn lại những lời bình luận thật sự là
ai.

Danh sách kiểm tra


các điều kiện 42 kiến trúc 54
ngược dòng điều căn bản đó 59
ТРЕБУЕТСЯ ЛИ КРУПНОЕ СТРОИТЕЛЬСТВО 69
Thiết kế trong các hoạt động xây dựng
lớp chất lượng 157 122
High-Quality lề thói hàng ngày 185 211:
Những Pseudocode lập trình phòng thủ quá trình lập trình thứ 233 loại ở chung sử dụng dữ liệu
257
nêu rõ các biến số 288 Dữ liệu cơ bản 316 bé ở những
lý do sử dụng dữ liệu bất thường trong 343 loại
mã Straight-Line Tổ Chức 353
sử dụng
những vòng
bất thường Conditionals 365 DEPARTMENTOFSOCIALSERVICES PUB 388 cấu trúc 410
phương pháp Table-Driven kiểm soát trong đó có 429 Vấn đề là 459 $ Quality-Assurance
Control-Structure một kế hoạch 476 cặp hiệu quả 484
Hiệu quả chậm lại 491 Lập trình
kiểm tra số 532 trường hợp
các công cụ nhắc nhớ Mau ra tuyến 559... và dứng lí do để gỡ lỗi Refactor 570
577
Refactoring Refactorings Tóm Lược của một cách an toàn 584
607 Code-Tuning chiến lược kỹ thuật có khoảng 642
xxix Code-Tuning

xxx danh sách kiểm tra


quản lý
tích hợp 669 Cấu hình
Công cụ
bố trí 724 Lập trình 707 773
Mã Self-Documenting 780
bình luận của tốt 816

Bàn kỹ thuật
bàn 3-1 chi phí trung bình cho sửa dị tật bẩm sinh dựa trên khi họ đang giới thiệu và phát hiện
29
bàn điển hình các hoạt động tốt cho 3-2 ba loại dự án phần mềm 31
3-3 ảnh hưởng của đang nhảy bàn điều căn bản đó trên và lặp đi lặp lại Dự án nối Tiếpstencils
33
hỗn hợp cơm và ảnh hưởng của bàn tập trung vào điều căn bản đó trên và lặp đi lặp lại Dự án
nối Tiếpstencils 34
tỷ lệ 4-1 bàn của High-Level-c¥c léi khai để tương đương với ngôn ngữ C mã 62
bàn phổ biến các mẫu thiết kế 5-1
5-2 Bàn 104 Thiết Kế đúng thủ tục thôi và độ chi tiết cần
bàn nước ta ghi nhận 116 6-1 mức biến đổi về di truyền lề thói hàng ngày
bàn Plan 9 8- 1 Popular-Language hỗ trợ 145 đối với trường hợp ngoại lệ 198
11-1 Bàn ví dụ về tốt và xấu tên biến tăng 261
11-2 Bàn tên biến quá lâu, quá ngắn, hoặc chỉ đúng 262
mẫu 11-3 Bàn nêu rõ in cho C++ và
bàn 277 mẫu 11-4 Java nêu rõ in cho C 278
mẫu 11-5 Bàn nêu rõ in cho Visual Basic
bàn 11-6 278 mẫu UDTs cho bộ xử lý một từ 280
11-7 bàn về ngữ nghĩa quan trọng lắm. 280
số 12-1 Phạm vị bàn cho nhiều loại
bàn 13-1 Integers tăng lên 294 truy cập dữ liệu toàn cầu trực tiếp và truy cập thông qua lề thói
hàng ngày
13-2 Bàn 341 song song và Nonparallel sử dụng dữ liệu phức tạp 342
16-1 Bàn những loại vòng lặp
bàn 19-1 368 lần chuyển hóa của các biểu hiện dưới DeMorgan logic là 436 khắc khe
19-2 bàn kĩ thuật đếm điểm quyết định trong một thói quen thường nhật
bàn đội 20-1 458 trên mỗi 469 khách quan chức
20-2 Bàn Defect-Detection suất
bàn, 470 20-3 Lập trình cực đoan ước tính Tỷ lệ 472
21-1 Defect-Detection bàn so sánh các kỹ thuật xây dựng cộng tác
bàn 495 23-1 ví dụ về tâm lý khoảng cách giữa tên biến lý tưởng là 556
25-1 bàn thân thời gian thực thi của ngôn ngữ lập trình
bàn 25-2 chi phí cho 600 Các hoạt động thường thấy 601
xxxi
xxxii bàn
27-1 Bàn kích cỡ dự án và mật độ lỗi điển hình
Bàn 27-2 kích cỡ 652 dự án 653 và năng suất
28-1 Bàn điều đó ảnh hưởng đến nỗ lực Software-Project yếu tố 674
28-2 Bàn Software-Development hữu ích để đo lường 678
28-3 bàn một ô xem về cách lập trình viên dành thời gian cho

thấy các con số 681


Tìm 1-1 hoạt động xây dựng được hiển thị trong vòng tròn màu xám. Việc xây dựng tập trung
vào mã hóa và gỡ lỗi nhưng cũng bao gồm thiết kế chi tiết, thử nghiệm tích hợp, thử nghiệm
đơn vị, và các hoạt động khác. 4
Tìm 1-2 cuốn sách này tập trung vào mã hóa và gỡ lỗi, thiết kế, xây dựng lên kế hoạch chi tiết,
đơn vị đang thử, hợp nhất, thử nghiệm tích hợp, và các hoạt động khác trong gần như đó là tỉ
lệ. 5
Tìm thất bại 2-1 trước bức thư-viết ẩn dụ cho rằng các quá trình đó phụ thuộc vào phần mềm
đắt phép thử và sai sót hơn là kế hoạch cẩn thận và thiết kế. 14
Tìm hoà 2-2 thật khó để mở rộng việc nuôi trồng ẩn dụ để phát triển phần mềm hợp pháp. 15
Tìm thì 2-3 hình phạt cho một sai lầm trên một cấu trúc đơn giản chỉ là một chút thời gian và có
lẽ một số ngượng. 17
tìm từ 2 đến 4 cấu trúc phức tạp hơn đòi hỏi lập kế hoạch cẩn thận hơn. 18
Tìm 3-1 chi phí để chỉnh sửa khuyết điểm tăng nhanh đáng kể thời gian từ khi nó là giới thiệu-
duced với khi phát hiện là tăng. Đây vẫn đúng cho dù dự án đang nối tiếpstencils (làm cao 100
phần trăm các yêu cầu của thiết kế và phía trước) hoặc lặp đi lặp lại (làm cao 5 phần trăm các
yêu cầu của thiết kế và phía trước). 30
tìm các hoạt động 3-2 sẽ chồng chéo ít nhiều vào các dự án nhất, ngay cả những thứ rất liên
tiếp. 35
Tìm 3-3 trên những dự án khác, các hoạt động sẽ chồng chéo trong suốt thời gian của dự án.
Bí quyết để xây dựng thành công là hiểu được mức độ mà prereq- uisites có được hoàn thành
và điều chỉnh phương pháp của bạn cho phù hợp. 35
hỗn hợp cơm và tìm ra vấn đề định nghĩa đẻ thật là nền tảng cho phần còn lại của quá trình lập
trình. 37
Tìm 3-5 Hãy đảm bảo bạn biết những gì bạn đang nhắm tới trước khi em bắn vào. 38
Tìm 3-6 mà không có yêu cầu, bạn có thể có quyền vấn đề chung nhưng bỏ lỡ dấu hiệu này
trên khía cạnh cụ thể của vấn đề. 39
Tìm 3-7 phần mềm mà không có kiến trúc, Bạn có thể có vấn đề đúng nhưng nhầm giải pháp.
Nó có thể là không thể có thành công trình xây dựng. 44
Tìm những định đến Tacoma thu hẹp lại tầm nhìn 5-1 cây cầu một ví dụ về một vấn đề độc ác.
75

con số
5-2 xxxiii xxxiv tìm được nồng độ các thiết kế trong một chương trình. Hệ thống (1) Đầu tiên là
tổ chức thành các hệ thống con (2). Những hệ thống con đang phân chia thành các lớp học
thêm (3), và các lớp học được chia thành thói quen hàng ngày và dữ liệu (4). Bên trong thói
quen của mỗi cũng thiết kế (5). 82
Tìm ngược một ví dụ về một hệ thống có 6 hệ thống con. 83
Tìm rút ngắn tỉ số xuống 5-4 một ví dụ về những gì sẽ xảy ra với không hạn chế về
intersubsystem truyền thông. 83
Tìm 5-5 với một vài luật giao tiếp, bạn có thể đơn giản hóa tương tác hệ thống con đáng kể. 84
hoá hay ở các của hiệu bán hệ thống hoá đơn thanh toán này tìm được cấu tạo từ 4 đối tượng
lớn. Những đồ vật đã được phổ thông cho ví dụ này. 88
Tìm 5-7 Trừu tượng cho phép bạn lấy một đơn giản hơn 1 khái niệm phức tạp.
Tìm 5-8 Encapsulation 90 nói rằng, không chỉ bạn được cho phép một đơn giản hơn 1 khái
niệm phức tạp, bạn không được nhìn vào bất kỳ chi tiết cụ thể về khái niệm phức tạp. Cái mà
bạn thấy là cái bạn có được nó là tất cả những gì cô-lấy! 91
Tìm 5-9 tháng 10 một lớp học tốt giao diện là như một mảng băng, bỏ lại hầu hết các lớp
unexposed. 93
tìm từ 5 đến 10 Polya G. phát triển một phương pháp để giải quyết các vấn đề trong toán học
đó là cũng rất hữu ích trong việc giải quyết các vấn đề trong thiết kế phần mềm (Polya năm
1957). 109
Plan 9 8- 1 phần tìm Interstate-90 cây cầu nổi ở Seattle chìm trong một cơn bão bởi vì những
chiếc tăng phát hành cổ phiếu lần đầu bị bỏ được tìm ra, họ đầy nước, và cầu trở nên quá nặng
trôi chứ. Trong xây dựng, bảo vệ chống lại bản thân... những thứ nhỏ bé quan trọng hơn các
bạn nghĩ.
Tìm 8-2 Maryland... bên cạnh là quán ăn định nghĩa một số bộ phận của phần mềm mà làm
việc với dữ liệu bẩn và một số công việc đó với dữ liệu sạch cho bé có thể là một cách hiệu quả
để làm giảm đa số mật mã của trách nhiệm kiểm tra dữ liệu những kẻ xấu. 204
Tìm 9-1 chi tiết của lớp khác nhau, nhưng xây dựng các hoạt động thường xảy ra trong thứ tự
cho thấy ở đây.
Tìm 9-2 216 Đây là những hoạt động lớn mà đi vào việc xây dựng một thói quen thường nhật.
Chúng thường được thực hiện trong thứ tự xuất hiện. 217
Tìm 9-3 Bạn sẽ thực hiện tất cả những bước này khi bạn thiết kế một thói quen thường nhật
nhưng không nhất thiết phải là trong bất cứ thứ tự. 225
Tìm 10-1 "sống" thời gian dài có nghĩa là một biến số là sống trong tiểu bang- ments nhiều.
"sống" có nghĩa là thời gian ngắn nó sống vì chỉ một vài lời tuyên bố. "quãng đời" đề cập đến
gần gũi với nhau mẫu tham khảo với một biến số đang.
10-2 246 tìm dữ liệu Nối Tiếpstencils là dữ liệu đó là lý ở một trật tự xác định. 254
Tìm 10-3 dữ liệu có chọn lọc cho phép bạn sử dụng một miếng nữa nhưng không thể cả hai.

Các con số 255 xxxv


tìm 10-4 dữ liệu được lặp lại lặp đi lặp lại. 255
Tìm 13-1 lượng bộ nhớ được sử dụng bởi mỗi kiểu dữ liệu được biểu diễn bằng đường gấp
đôi. 324
13-2 tìm một ví dụ của một tấm hình để giúp chúng ta nghĩ qua những biện pháp liên quan
trong relinking chiêu. 329
Tìm 14-1 Nếu mã này những tổ chức thành nhóm, các hộp được vẽ quanh liên quan giây- tions
không có sự trùng khớp. Họ có thể là lồng nhau.
14-2 352 Tìm nếu mã này được sắp xếp những chiếc hộp đen lắm, xung quanh các phần
chồng chéo liên quan đến được vẽ. 353
Tìm 17-1 đệ quy có thể là một công cụ có giá trị trong cuộc chiến chống lại sự phức tạp-khi
được sử dụng để tấn công các vấn đề phù hợp. Lên đến 394 người
tìm 18-1 như tên của câu lạc bộ, một-bàn truy cập trực tiếp cho phép bạn truy cập vào bàn ele-
ment bạn thích trực tiếp.
18-2 413 Tìm thông điệp được lưu trữ trong không ra lệnh, đặc biệt mỗi với mô ID một thông
điệp.
18-3 417 Tìm ngoài id của thông điệp, mỗi loại thông điệp đã định dạng của riêng nó.
18-4 418 Tìm thay vì bị truy cập trực tiếp, một bàn để truy cập phụ lục đã truy cập thông qua
một chỉ số trung gian. 452
Tìm 18-5 cầu thang-bước tiếp cận nó phân loại mỗi mục bằng cách xác định mức độ nào mà nó
chạm vào một "cầu thang." "bước" nó đâm phải xác định phân loại của nó. 426
Tìm 19-1 ví dụ về sử dụng số dòng-ra lệnh cho cho bun xét nghiệm. Vào lúc 8h
tìm 20-1 tập trung vào một đặc trưng của chất lượng phần mềm bên ngoài có thể ảnh hưởng
đến các đặc điểm rõ ràng, hoặc xấu đến không phải tất cả.
20-2 466 tìm sự phát triển chậm nhất hay nhanh nhất phương pháp tạo ra được yếu mã độc
với hầu hết- dị tật bẩm sinh. Khoảng 475
Tìm 22-1 Như kích cỡ của dự án, nhà phát triển thử nghiệm tiêu thụ tăng tỷ lệ nhỏ hơn một
tổng thời gian phát triển. Các tác động của chương trình, kích cỡ mô tả chi tiết hơn trong
chương 27, "Làm thế nào kích cỡ ảnh hưởng đến xây dựng chương trình 502
Tìm 22-2." Như kích cỡ của dự án tăng tỉ lệ lỗi cam kết dur- xây dựng giảm ing. Tuy nhiên, xây
dựng các lỗi chiếm 45-75% tất cả các lỗi trên thậm chí những dự án lớn nhất. 521
Tìm 23-1 thử tái tạo lại gặp lỗi vài cách khác nhau để xác định nguyên nhân chính xác của nó.
X545
24-1 Tìm những sự thay đổi nhỏ có khuynh hướng bị lỗi hơn hơn là thay đổi lớn hơn (Weinberg
năm 1983). 581
con số
24-2 xxxvi tìm mã của anh không cần phải có lộn xộn chỉ bởi vì thế giới thực là lộn xộn.
Thụ thai hệ thống của bạn như một sự kết hợp của mã lý tưởng, giao diện từ mã lý tưởng để
lúng túng thế giới thực, và lúng túng thế giới thực. 583
tìm một chiến lược để cải thiện 24-3 mã sản xuất là refactor chân viết- acy kém mã như bạn
chạm vào nó, vì thế là để di chuyển nó tới phía bên kia của "giao diện tới lộn xộn thế giới thực."
584
Tìm 27-1 số liên lạc đường tăng tỉ lệ thuận với bình phương số người vào đội. 650
Tìm 27-2 như tăng kích cỡ dự án, sai lầm thường nhiều hơn từ các yêu cầu và thiết kế. Đôi khi
họ vẫn chủ yếu là từ việc xây dựng (Boehm năm 1981, năm 1987, Jones Grady 1998).
27-3 652 tìm các hoạt động xây dựng chi phối các dự án nhỏ. Các dự án lớn hơn đòi hỏi không
kiến trúc, công việc tích hợp, và kiểm tra hệ thống để thành công. Đòi hỏi các công việc không
ments- chiếu trên biểu đồ này bởi vì các điều kiện, nỗ lực này không trực tiếp một chức năng
của kích cỡ chương trình như các hoạt động khác ở (Albrecht năm 1979; năm 1982; Boehm
thủy tinh, màu xám, và Seewaldt 1984; Boddie năm 1987; năm 1987; McGarry, Thẻ Waligora,
và dermott năm 1989; Brooks 1995; Jones 1998; Jones 2000; Boehm et thật 100%. 2000).
27-4 654 Hình dung lượng công việc xây dựng là một phần mềm gần tuyến tính chức năng của
kích cỡ dự án. Các loại công việc tăng nonlinearly như tăng kích cỡ dự án.
28-1 655 Tìm chương này bao gồm những chủ đề quản lý phần mềm liên quan đến việc xây
dựng.
28-2 661 Tìm ước tính tạo ra sớm trong một dự án vốn là đã không chính xác. Như dự án tiến
triển, ước tính có thể trở thành chính xác hơn. Reestimate theo định kỳ trong suốt một dự án,
và sử dụng những gì các bạn học trong suốt mỗi hoạt động để nâng cao khả năng ước tính số
người hoạt động tiếp theo.
29-1 673 tìm những sân bóng bầu dục thêm-trên tại Trường Đại học Washington sụp đổ bởi vì
nó không đủ mạnh để hỗ trợ có thể sử dụng trong thời gian xây dựng. Nó có thể sẽ có được đủ
mạnh khi hoàn tất, nhưng đó là-- structed nhầm-một lỗi tích hợp trật tự. Chi 690
Tìm 29-2 tích hợp từ giai đoạn này cũng được gọi là "big bang" tích hợp cho một lý do tốt! 691
Tìm 29-3 tăng dần giúp một dự án xây dựng tích hợp đà phát triển, giống như một quả bóng
tuyết đi đi xuống đồi.

Các con số 692 xxxvii


tìm 29-4 ở tích hợp từ giai đoạn, bạn tích hợp vì vậy nhiều thành phần ngay lập tức thật khó để
biết chỗ lỗi là. Nó có thể là trong bất kỳ thành phần hay trong bất kỳ mối quan hệ của họ. Trong
tích hợp, những tăng dần thường dù đang thành phần mới hoặc trong sự liên hệ giữa compo-
nent mới và hệ thống.
29-5 693 tìm trong tích hợp từ trên xuống, bạn thêm các lớp học ở trên đỉnh đầu tiên, ở phía
dưới cuối cùng. Đường 695
Tìm 29-6 như là một giải pháp thay thế cho áp sát nghiêm trên xuống dưới, bạn có thể tích hợp
từ trên xuống trong lớp mỏng dọc.
29-7 696 tìm trong tích hợp từ dưới lên, bạn tích hợp các lớp học đầu tiên ở dưới đáy, tại đỉnh
cuối cùng.
29-8 697 Tìm như là một giải pháp thay thế cho áp sát đơn thuần phía dưới đỉnh, bạn có thể
tích hợp từ dưới lên trong khu vực. Đây che mờ các đường nối tích hợp từ dưới lên và tính
năng tích hợp một cách mạnh mẽ, được mô tả sau trong chương này.
29-9 698 tìm trong tích hợp, bạn sandwich tích hợp cấp hàng đầu và được sử dụng rộng rãi
đáy- các lớp học và bạn đầu tiên cấp cứu các lớp học cấp trung lại sau cùng. 698
Tìm 29-10 Trong hướng nguy cơ hội nhập, bạn tích hợp các lớp học mà bạn mong đợi để trở
thành kẻ rắc rối nhất; bạn thực hiện đầu tiên dễ dàng hơn các lớp học sau. 699
Tìm 29-11 Trong hướng tính năng hợp nhất, bạn tích hợp các lớp học về các nhóm điều đó tạo
ra các tính năng có thể nhận biết được thường là từ, nhưng không phải luôn luôn, nhiều các
lớp học tại một thời gian. 700
Tìm 29-12 trong hình chữ T hợp nhất, bạn xây dựng và tích hợp một lát cắt của hệ thống sâu
để kiểm tra những giả định kiến trúc và sau đó bạn xây dựng và tích hợp rộng của hệ thống để
cung cấp một cơ cấu về việc phát triển các chức năng còn lại.
Tìm các chương trình 34-1 tầng 2! có thể được chia ra thành mức độ trừu tượng. Một thiết kế
tốt sẽ cho phép bạn dành nhiều thời gian của bạn chỉ tập trung vào phần trên lớp ignor- ing lớp
thấp hơn. 846

Chương 5
thiết kế trong việc xây dựng
cc2e.com/0578 nội dung
5,1 Thách thức thiết kế ■: trang 74
■ chìa khóa khái niệm thiết kế 5.2: trang 77
■ 5,3 Khối nào: Heuristics thiết kế: trang 87
5. 4 thói quen thiết kế ■: trang 110
■ 5,5 bình luận về hệ phương pháp phổ biến: page 1 1 8
chủ đề liên quan,
phần mềm kiến trúc: ■ đoạn 3. 5
■ các lớp học làm việc: Chương
■■ 6 đặc điểm của thói quen hàng ngày chất lượng cao: Chương 7
■: Chương 8 lập trình phòng thủ
■ Refactoring 24 Chương
■: chương trình kích cỡ ảnh hưởng đến xây dựng thế nào: Chương 27
một số người có thể biện luận rằng thiết kế thực sự không phải là một hoạt động xây dựng,
nhưng trên các dự án nhỏ, nhiều hoạt động đang nghĩ như là xây dựng, thường bao gồm thiết
kế. Trên một số dự án lớn hơn, một kiến trúc chính thức địa chỉ có thể chỉ những vấn đề cấp hệ
thống và nhiều việc thiết kế có thể được để xây dựng cố tình. Trên các dự án lớn, những thiết
kế có thể được kỳ vọng có đủ chi tiết cho mã hóa cơ khí khá là thiết kế, nhưng hiếm khi mà
hoàn toàn các lập trình viên-thường thiết kế một phần của chương trình, chính thức hay không
cũng vậy.
Cross-Reference để tìm chi tiết về các dự án không chính thức, nhỏ, có rất nhiều kiểu thiết kế là
thực hiện trong khi các lập trình viên ngồi ở
trên cấp độ khác nhau của cho- bàn phím. "Thiết kế" có thể là chỉ viết một giao diện trong lớp
học giả bộ như mình- mality pseudocode trước khi cần thiết trên các dự án lớn và nhỏ, thấy
chương ing chi tiết. Nó có thể là vẽ biểu đồ của một vài mối quan hệ lớp trước khi mã hóa
27 chương trình, "Làm thế nào kích cỡ của chúng. Nó có thể hỏi lập trình viên khác mà mẫu
thiết kế, dường như là cá-
ảnh hưởng đến việc xây dựng." Sáng lựa chọn. Bất kể đã làm sao, dự án nhỏ hưởng lợi từ
thiết kế cẩn thận chỉ như các dự án lớn hơn làm, và công nhận những thiết kế như là hoạt động
dựt khoát tối ben- efit ngươi sẽ nhận được từ nó.
Thiết kế chủ đề sự lớn, vì vậy chỉ một vài khía cạnh của nó được coi là trong chương này. Một
phần lớn trong lớp hay công việc thường nhật của thiết kế tốt được xác định bởi hệ thống kiến
trúc, vì vậy bạn nên
73

74 Chương 5: Thiết kế trong việc xây dựng


chắc chắn rằng kiến trúc prerequisite thảo luận trong đoạn 3. 5 đã được thỏa mãn.
Thậm chí còn hơn cả việc thiết kế đó là làm ở mức độ cá nhân các lớp học, và lề thói hàng
ngày, mô tả trong chương 6, "Các lớp học làm việc," và chương 7, "High-Quality lề thói hàng
ngày."
Nếu bạn đã quen thuộc với chủ đề thiết kế phần mềm, bạn có thể muốn vừa đánh văng cả
thuốc nhuộm trong các phần về thiết kế thách thức trong Đoạn 5.1 và chìa khóa heuristics trong
đoạn 5. 3.
5. 1 thách thức
những khác biệt Cross-Reference thiết kế- cụm từ "thiết kế phần mềm" có nghĩa là sự thụ thai,
hay contrivance phát minh của một
ence giữa dựa trên kinh nghiệm đó thì chuyện và kế hoạch để biến một phần mềm máy vào
đặc tả phần mềm hoạt động. được định trước quá trình là mô tả trong chương 2, được thiết kế
là hoạt động mà liên kết các yêu cầu đối với mã hóa và gỡ lỗi. Một hàng đầu tốt-
"phép ẩn dụ cho một mức độ giàu thiết kế cung cấp một cấu trúc có thể an toàn chứa nhiều cấp
thấp hơn thiết kế.
Phần mềm có hiểu biết về thiết kế tốt là hữu ích trên các dự án nhỏ và không thể thiếu trên dự
án lớn. Sự phát triển." được
thiết kế là cũng đánh dấu bởi rất nhiều thách thức, mà những vạch ra trong đoạn này.
Thiết kế là một vấn đề độc ác
bức ảnh của một phần mềm Horst Rittel và Melvin White Webber được định nghĩa một "độc ác"
vấn đề như một
nhà thiết kế mà có thể được thiết kế của ông được định nghĩa rõ ràng có sự ưng thuận chỉ
bằng cách giải quyết nó, hoặc bằng cách giải quyết phần của nó (1973). Nghịch lý này, trong
một non nớt có lý trí, cách lỗi nào từ một bài phát biểu của đòi hỏi- đặc, bạn cần phải "giải
quyết" vấn đề một lần để định nghĩa rõ ràng nó và
khá tổ xạo ments. Không sau đó giải quyết nó lần nữa để tạo ra một giải pháp sẽ có hiệu quả.
Quá trình này đã được
hệ thống bổn phận làm mẹ chưa bao giờ devel- và bánh táo trong phát triển phần mềm trong
nhiều thập niên (Peters Tripp và năm 1976). oped theo cách đó, và không bao giờ proba- bly
sẽ. Ngay cả những nơi tôi ở, một ví dụ kinh điển của một vấn đề độc ác là thiết kế chương trình
phát triển- ments nhỏ cho thấy trong những cuốn sách giáo khoa của ảnh gốc định đến Tacoma
cây cầu thu hẹp lại tầm nhìn. Tại thời điểm đó, cây cầu chính, xây dựng--
và giấy tờ đều vô lý. Họ sideration trong thiết kế một cây cầu là nó phải đủ mạnh để hỗ trợ theo
kế hoạch của mình
đã được sửa lại và pol- tải. Trong trường hợp của cây cầu thu hẹp lại tầm nhìn, gió định đến
Tacoma tạo ra một bất ngờ, mặt này- ished cho đến khi tác giả đã cho chúng ta những gì ông
ta mong muốn ông bên điều hoà lan tỏa. Một ngày trong năm 1940 blustery ripple lớn cho đến
khi
đã làm, tiệu diệt không những gì thực sự đang cầu đổ sập, như được nêu trong Hình 5-1.
có xảy ra.
- David Parnas và đây là một ví dụ rất hay về một vấn đề độc ác bởi vì, cho đến khi cầu đổ sập,
Paul Clements kỹ sư của nó đã không biết rằng khí động lực cần được xem như một chừng
mực nào đó.
Chỉ bằng cách xây dựng cầu (giải quyết vấn đề) có thể họ học về những điều xem xét tional
addi- trong vấn đề cho phép họ xây dựng một cây cầu khác mà vẫn còn đó.

5.1 thiết kế những thử thách 75


News Tribune tìm những định đến Tacoma thu hẹp lại tầm nhìn 5-1 cây cầu một ví dụ về một
vấn đề độc ác.
Một trong những sự khác biệt chính giữa chương trình bạn phát triển ở trường và những bạn
sẽ phát triển như một chuyên gia là rằng nhiều vấn đề cần được giải quyết bằng cách thiết kế
các chương trình học hiếm khi, nếu có bao giờ, độc ác. Bài tập ở trường học thường lập trình
soạn ramột để đưa cô vào một từ bắt đầu kết thúc. đi thẳng đến chỗ ông đã có thể muốn tar
lông một giáo viên ai đã đưa cho cháu một nhiệm vụ lập trình, sau đó đã thay đổi bài tập ngay
sau khi bạn chưa hoàn thành thiết kế, và sau đó đổi nó một lần nữa như ông phải thu lại sự
hoàn thành pro--gram. Nhưng đó là một quá trình rất thực tế trong lập trình chuyên nghiệp hàng
ngày.
Thiết kế là một quá trình cẩu thả (Thậm chí nếu nó sẽ tạo ra một kết quả thu dọn)
phần mềm hoàn chỉnh thiết kế nên nhìn những tổ chức và làm sạch, nhưng quá trình sử dụng
để phát triển một thiết kế là gần như không thu dọn như là kết quả cuối cùng.
Đọc sách cho một fuller thêm được thiết kế là ủy mị bởi vì bạn nhiều sai bước và đi xuống
nhiều người mù hẻm-
cuộc khám phá điểm quan sát này, bạn tạo ra rất nhiều sai lầm. Thật vậy, phạm phải sai lầm
điểm chính là thiết kế của nó cũng thấy "một thiết kế có lý trí Pro- cess: Làm cách nào và tại
sao giả mạo phạm sai lầm rẻ hơn và chính xác, và thiết kế hơn đó sẽ là cho làm cùng một sai
lầm nghiêm trọng-
Nó" (Clements Parnas và phải mất, nhận ra họ sau khi mã hóa, và có để sửa chữa mã nở rộ.
Thiết kế là
năm 1986). bởi vì một giải pháp tốt và sơ sài thường chỉ thể khác từ một người nghèo.

76 Chương 5: Thiết kế trong việc xây dựng


Cross-Reference cho một thiết kế tốt hơn là cũng trông cẩu thả vì nó khó để biết khi thiết kế của
bạn là "đủ tốt."
Câu trả lời cho câu hỏi này, thấy bao nhiêu chi tiết là chưa đủ sao? Bao nhiêu thiết kế nên làm
với một thiết kế chính thức "Bao nhiêu thiết kế là đủ chưa?" trong đoạn 5. 4 cách ghi sau, và
bao nhiêu nên bị bỏ lại có thể làm được gì ở bàn phím? Khi nào các bạn
trong chương này. đã làm gì? Kể từ khi thiết kế là hồi kết, thường thấy nhất trả lời cho câu hỏi
đó là "Khi anh hết thời gian." được
thiết kế là về sự đánh đổi ưu tiên và
trong một thế giới lý tưởng, hệ thống có thể chạy ngay lập tức trong mỗi, tiêu thụ 0 không gian,
lưu trữ sử dụng 0 mạng lưới băng thông, không bao giờ lỗi chứa bất kỳ, và không đáng gì để
xây dựng. Trong thế giới thực, một phần thiết yếu của công việc của người thiết kế là để cân
nhắc cạnh tranh và tấn công một đặc điểm thiết kế cân bằng giữa các đặc tính. Nếu một tỷ lệ
phản ứng nhanh là quan trọng hơn việc giảm thiểu thời gian phát triển, một nhà thiết kế sẽ chọn
một thiết kế. Nếu làm giảm thiểu thời gian phát triển quan trọng hơn, một nhà thiết kế tốt sẽ tự
tạo ra một thiết kế khác nhau.
Bao gồm việc hạn chế thiết kế
điểm những thiết kế này một phần là để tạo ra các khả năng và một phần là để hạn chế khả
năng. Nếu mọi người có thời gian vô hạn, tài nguyên, và không gian để xây dựng cấu trúc vật
lý, bạn sẽ thấy kinh ngạc những tòa nhà với một phòng các vùng cho mỗi chiếc giày và hàng
trăm căn phòng.
Đây là cách phần mềm có thể quay ra ngoài mà không cố tình áp đặt các hạn chế. A-Con-
straints của những nguồn lực hạn chế cho việc xây dựng các tòa nhà đơn giản hóa của solu
lực--đổi rằng cuối cùng giải pháp cải thiện. Mục tiêu trong thiết kế phần mềm tương tự.
Thiết kế Nondeterministic là
nếu bạn gửi 3 người ra xa để thiết kế các chương trình tương tự, họ có thể dễ dàng trở về với 3
nhóm người thiết kế khác nhau, mỗi mà chúng ta có thể hoàn toàn được chấp nhận. Có thể có
nhiều hơn một cách để da một con mèo, nhưng có hàng tá cách thường thiết kế một chương
trình máy tính.
Thiết kế là một quá trình
thiết kế bởi vì là dựa trên kinh nghiệm đó thì chuyện nondeterministic, kỹ thuật thiết kế có xu
hướng heuristics-"quy tắc ngón tay cái" hay "thứ thử cách này đôi khi thành công"-thay vì có
thể lặp lại quá trình để bảo đảm có thể dự đoán kết quả. Tạo ra Thiết kế bao gồm phép thử và
sai sót.
Công cụ thiết kế là điểm mấu chốt hoặc phương pháp mà công một công việc hoặc trên một
khía cạnh của một công việc có thể không còn tác dụng nữa vào dự án tiếp theo. Không có
công cụ nào là phù hợp cho mọi thứ.
Rõ Rệt
cc2e.com/0539 là thiết kế một cách thu dọn tóm tắt quan điểm những thuộc tính của thiết kế
như nói rằng thiết kế là "còn tuyệt vời." thiết kế không mùa xuân đã được hình thành hoàn trực
tiếp từ một bộ não. Họ phát triển theo và cải thiện tái duyệt qua thiết kế, thảo luận không chính
thức, viết mã bản thân trải nghiệm, và trải nghiệm xem xét lại mã.

5.2 chìa khóa khái niệm 77


đọc thêm thiết kế phần mềm hầu như mọi hệ thống trải qua một số mức độ thay đổi thiết kế
trong ban đầu của họ devel-
không chỉ là loại struc- opment, và rồi họ thường thay đổi đến một mức độ lớn hơn trong khi họ
đang mở rộng vào ture rằng thay đổi theo thời gian.
Cấu trúc vật lý tiến hóa, sau phiên bản. Mức độ để mà đã thay đổi này có lợi cho sức khỏe
hoặc được chấp nhận tuỳ thuộc vào
quá-thấy tòa nhà tự nhiên của phần mềm đang được xây dựng.
Học (thương hiệu 1995).
5.2 chìa khóa thiết kế các khái niệm
thiết kế tốt phụ thuộc vào sự hiểu biết một nhúm chìa khóa khái niệm. Đoạn này coi thường-
cusses vai trò của sự phức tạp, thích lái đặc điểm của thiết kế, thiết kế và mức độ.
Kỹ thuật chính của phần mềm: là quản lý sự phức tạp
Cross-Reference cấp bách cho discus- để hiểu được tầm quan trọng trong việc quản lý sự
phức tạp, nó thực sự hữu ích để đề cập đến Fred
sion cách của sự phức tạp là bước ngoặt lớn Brooks giấy, "Không có viên đạn bạc: Bản chất,
tai biến Engi phần mềm- ảnh hưởng đến các vấn đề khác hơn là lập trình thiết kế, thấy neering"
(1987).
Đoạn 34.1, "chinh phục sự phức tạp." ngẫu nhiên và rất cần thiết khó khăn
Brooks, biện luận rằng sự phát triển phần mềm được làm việc khó khăn vì các lớp học về hai
vấn đề-cốt yếu nhất và ngẫu nhiên. Trong hai ám chỉ về mặt, Brooks vẽ trên một truyền thống
triết lý sẽ quay về Aristotle. Trong triết học, căn các đặc tính những tính chất đó một thứ này để
được điều đó.
Một chiếc xe phải có một động cơ, bánh xe, và cánh cửa tới được một chiếc xe. Nếu nó không
có bất kỳ những tính chất thiết yếu, nó thực sự không phải là một chiếc xe.
Ngẫu nhiên các đặc tính những tính chất một thứ chỉ xảy ra với có đặc tính, không thực sự gấu
vào liệu là đó là cái gì. Một chiếc xe có thể có một V8, một bị buộc tội 4--turbo hình trụ, hay một
số các loại động cơ và là một chiếc xe bất kể chi tiết đó.
Một chiếc xe có thể có 2 hoặc 4 cánh cửa; nó có thể có bánh xe hay gầy gò băng đạn bánh xe.
Tất cả những chi tiết đặc tính là ngẫu nhiên. Bạn có thể xem như không ngờ thuộc tính tình cờ,
thiết yếu,, và tùy chọn tình huống ngẫu nhiên.
Tình cờ Brooks observes Cross-Reference rằng tình cờ khó khăn trong phần mềm lớn đã giải
quyết
những khó khăn dài hơn là promi- trước. Ví dụ, tình cờ khó khăn liên quan đến vụng về ngôn
ngữ nent syntaxs đã vào đầu-phát triển- ment sóng hơn vào cuối-vẫy tay phần lớn bị loại bỏ
trong quá trình tiến hoá từ hội đồng ngôn ngữ để thế hệ thứ ba lan-
phát triển. Để tìm chi tiết, và đã giảm đi trong guages ý nghĩa tăng dần từ đó. Tình cờ difficul-
xem đoạn 4.3, "Loca- quan hệ của bạn liên quan đến máy tính được giải quyết khi
noninteractive thời gian-chia sẻ-đổi trên hệ điều hành công nghệ vẫy tay." hệ thống lô-hệ thống
chế độ thay thế. Lập trình tích hợp lông- bị lừa ngay từ loại bỏ các môi trường lỗ hổng không
hiệu quả trong việc lập trình của các công cụ làm việc từ cùng nhau kém.

78 Chương 5: Thiết kế trong việc xây dựng


Brooks, biện luận rằng sự tiến bộ của phần mềm trên thiết yếu còn lại khó khăn là nhất định sẽ
có chậm hơn. Lý do là, tại các bản chất, phát triển phần mềm bao gồm tìm ra tất cả các chi tiết
của một quy interlocking rắc rối, các khái niệm. Căn khó khăn phát sinh từ sự cần thiết của
cùng với ô tô hàng đầu thế giới thực, phức tạp; một cách chính xác và hoàn toàn trong việc xác
định dependencies và các trường hợp ngoại lệ; thiết kế giải pháp mà không chỉ khoảng đúng
nhưng điều đó phải được chính xác đúng; và vì thế. Thậm chí nếu chúng ta có thể sáng tạo ra
một ngôn ngữ lập trình sử dụng cùng một thuật ngữ này như những vấn đề thực tế chúng ta
đang cố gắng giải quyết, lập trình vẫn khó khăn vì trong những thách thức trong việc xác định
chính xác bao hoạt động của thế giới thực. Như các địa chỉ lớn hơn chưa từng phần mềm các
vấn đề của thế giới thực, những hoạt động tương tác giữa những thực thể trong thế giới thực
ngày càng trở nên rắc rối, và rồi làm tăng trọng yếu độ khó của giải pháp phần mềm.
Nguồn gốc của tất cả những khó khăn là cần thiết sự phức tạp-ngẫu nhiên và cả hai thiết yếu.
Quan trọng trong việc quản lý sự phức tạp
có hai cách-- Khi dự án phần mềm khảo sát các nguyên nhân gây thất bại dự án báo cáo, họ
hiếm khi nhận diện
structing một thiết kế phần mềm: Lý do kỹ thuật như là nguyên nhân chính của dự án thất bại.
Dự án thất bại thường nhất là một cách là để làm ra nó sim- ple rằng có những vì các điều kiện
nghèo rõ ràng, nghèo, hay nghèo lên kế hoạch quản lý. Nhưng khi
không có những khiếm khuyết, và các dự án làm thất bại vì những lý do chủ yếu về kỹ thuật, lý
do thường uncon-
khác là để làm ra nó compli- tạo ra sự phức tạp. Phần mềm được cho phép để phát triển phức
tạp đến nỗi không ai cated thực sự là không có obvi- ous khiếm khuyết. biết những gì nó làm.
Khi một dự án chạm tới điểm khi không ai hoàn toàn
- C. A. R. Hoare hiểu các tác động mà thay đổi mã ở khu vực sẽ có trên các khu vực khác, sự
phát triển sẽ dẫn dừng lại.
Quản lý sự phức tạp là chủ đề kỹ thuật quan trọng nhất trong phát triển phần mềm.
Theo quan điểm của tôi, nó rất quan trọng mà chính của phần mềm bắt buộc phải có kỹ thuật
quản lý sự phức tạp.

Sự phức tạp là điểm mấu chốt không một tính năng mới của sự phát triển phần mềm. Nhà tiên
phong Edsger Dijkstra điện toán chỉ ra rằng tính toán là ngành duy nhất trong đó một trí óc có
nghĩa vụ phải cống hiến hết khả năng của sự cách biệt giữa một chút để một vài trăm 8MB, tỷ
lệ một từ 1 đến 109, hoặc 9 độ rích-te (Dijkstra theo lệnh của năm 1989). Tỷ lệ này là 1500.
Dijkstra nói thế này: "so với con số của các cấp. mathemati trung bình- cal lý thuyết là gần như
bằng phẳng. Bằng cách mạng khơi dậy toàn bộ sự cần thiết để khái niệm hóa sâu các thứ bậc,
máy tính confronts tự động chúng ta với một quan niệm mới thử thách trí tuệ đó chưa có tiền lệ
trong lịch sử của chúng ta." Tất nhiên phần mềm thậm chí còn phức tạp hơn
9 từ năm 1989, và tỷ lệ Dijkstra là từ 1 đến 10 15, có thể dễ dàng trở nên giống như 1 đến 10
ngày hôm nay.

5.2 chìa khóa khái niệm thiết kế 79


một triệu chứng rằng bạn có Dijkstra chỉ ra rằng không ai thực sự hộp sọ đủ lớn để chứa hiện
đại com- một
tai nạn trong chương trình Dijkstra puter sự phức tạp (1972), điều này có nghĩa là chúng như
các nhà phát triển phần mềm bị quá tải là khi bạn thấy mình khăng khăng nói áp dụng không
nên cố gắng găm vào các chương trình chúng vào trong toàn bộ chiếc đầu lâu ở một lần; chúng
ta nên cố gắng orga-
phương pháp rõ ràng nize irrele- chương trình của chúng tôi theo một cách mà chúng ta có thể
giữ an toàn tập trung vào một phần của nó ở một thời gian.
vant, ít nhất là cho bất cứ bên ngoài mục tiêu là phải giảm thiểu số tiền của một chương trình
bạn phải nghĩ về vào bất kỳ hoa tiêu. Nó giống như là một người lại vừa làm những việc vớ vẩn
trong thời gian biểu. Bạn có thể cho rằng điều này là bằng lưới-những tâm thần bi hơn về tâm
lý chương trình
có xe hơi-vậy đòi hỏi bạn phải giữ trong không khí trong cùng một lúc, và nhiều khả năng bạn
sẽ rơi một trong những quả bóng,
đặt nước ở cục pin dẫn đến một thiết kế hoặc lỗi mã hóa.
và lần đái dầm những cái gạt tàn.
- P. J. Plauger ở phần mềm-cấp kiến trúc, sự phức tạp của một vấn đề là giảm bằng cách chia
hệ thống con vào hệ thống. Con người có một thời gian comprehending dễ dàng hơn nhiều
sim- ple mẩu thông tin phức tạp hơn một chút. Mục tiêu của tất cả phần mềm-kỹ thuật thiết kế
là đập vỡ một vấn đề phức tạp thành từng mảnh đơn giản. Càng indepen- dent những hệ thống
con là, bạn càng làm an toàn để tập trung vào một chút sự phức tạp trong cùng một lúc. Cẩn
thận được định nghĩa các vật thể tách biệt những mối lo ngại rằng bạn có thể tập trung vào một
điều gì đó trong cùng một lúc. Làm việc cũng giúp ích cho gói ở cấp độ cao hơn kết hợp.
Giữ lề thói hàng ngày ngắn tinh thần của bạn có thể giúp giảm gánh nặng công việc. Các
chương trình viết về mặt của vấn đề miền, chớ không phải là về việc triển khai ở mức độ thấp
chi tiết, và làm việc ở cấp cao nhất của trừu tượng giảm tải trên não của bạn.
Điều mấu chốt là lập trình viên đã bù đắp cho việc mang tính di truyền của con người limita-
tions viết mật mã dễ dàng hơn cho bản thân họ và những người khác để hiểu và nơi mà có ít
lỗi.
Làm thế nào để tấn công sự phức tạp
tốn kém, nhưng không có hiệu quả mà thiết kế quá mức phát sinh từ 3 nguồn:
■ phức tạp một giải pháp cho vấn đề đơn giản
một cách thức đơn giản, khã'ng ä'ãºng ■ giải pháp cho một vấn đề phức tạp
một không phù hợp, phức tạp ■ giải pháp cho một vấn đề phức tạp
như Dijkstra chỉ ra, phần mềm hiện đại sự phức tạp, và em -**, cuối cùng bạn sẽ đụng vào một
vài cấp độ phức tạp đó là vốn có trong những vấn đề chính nó trong thế giới thực. Điều này cho
thấy một hai-prong để tiếp cận với quản lý sự phức tạp:
■ giảm thiểu số tiền thiết yếu của sự phức tạp của bộ não của bất cứ ai cũng phải đương đầu
với vào bất kỳ thời điểm nào.
Điểm mấu chốt giữ sự phức tạp ngẫu nhiên từ ■ trì tăng nhanh về số lượng.
Một khi bạn hiểu rằng tất cả các mục tiêu trong phần mềm kỹ thuật là thứ hai so với người đàn
ông- lão hóa, nhiều thiết kế những lý do sự phức tạp trở nên đơn giản.

80 Chương 5: thiết kế
rất mong chờ xây dựng trong đặc điểm của một thiết kế
khi tôi làm việc trên một một chất lượng cao thiết kế có nhiều đặc điểm chung. Nếu bạn có thể
đạt được tất cả những
vấn đề tôi không bao giờ nghĩ về mục tiêu, thiết kế của bạn sẽ thật sự rất tốt. Một số mục tiêu
có mâu thuẫn với mục tiêu khác, nhưng cái đẹp. Tôi nghĩ chỉ làm thế nào để giải quyết vấn đề.
Nhưng khi đó là thử thách của quá trình tạo ra một thiết kế một hệ thống đánh đổi từ cạnh tranh
ta hoàn, nếu các mục tiêu solu-. Một số đặc điểm của chất lượng thiết kế cũng đặc điểm của
một
-đổi không đẹp, tôi biết nó chương trình: độ tin cậy, hiệu suất, và vân vân. Những người khác là
dự đặc điểm của là sai.
- R. Buckminster Fuller thiết kế của tôi.
Cross-Reference những đây là một danh sách các thiết kế đặc điểm:
đặc điểm nội bộ có liên quan đến phần mềm tướng quân sự phức tạp tối thiểu các chất lượng
cao đặt mục tiêu của thiết kế nên để giảm thiểu sự phức tạp
thuộc tính. Để tìm chi tiết về các thuộc tính chung, thấy hai... cho tất cả những lý do vừa miêu
tả. Tránh "thông minh" thiết kế. Thiết kế thông minh là
20.1-đổi, "đặc điểm của thường rất khó hiểu. Thay vì làm "đơn giản" và "Rất dễ hiểu." thiết kế.
Chất lượng phần mềm." Nếu thiết kế của bạn không để anh yên tâm mà lờ đi hầu hết các bộ
phận khác của chương trình khi bạn đang chìm đắm trong một phần cụ thể, bản thiết kế không
thực hiện công việc của nó.
Dễ bảo trì dễ bảo trì có nghĩa là thiết kế cho các lập trình viên bảo trì. Tưởng tượng những câu
hỏi liên tục một lập trình viên bảo trì có thể tự hỏi về mã cháu viết. Nghĩ về các lập trình viên
bảo trì như khán giả của chúng ta, và sau đó thiết kế hệ thống được требуется.
Loose chẽ Loose đôi vậy có nghĩa là thiết kế nên anh ôm kết nối giữa những phần khác nhau
của một chương trình đến mức tối thiểu. Sử dụng những nguyên tắc của abstrac- tions tốt trong
lớp giao diện, và thông tin encapsulation, ẩn náu để thiết kế các lớp học với càng ít liên kết
càng tốt. Sự quan hệ công việc giảm thiểu tối thiểu trong hợp nhất, thử nghiệm, và bảo trì.
Extensibility Extensibility, nghĩa là bạn có thể tăng cường một hệ thống mà không gây ra bạo
lực để cấu trúc tiềm ẩn. Bạn có thể thay đổi một phần của một hệ thống mà không ảnh hưởng
đến những mảng khác. Thay đổi nhiều nhất vì hệ thống nhất do chấn thương.
Reusability Reusability có nghĩa là thiết kế hệ thống, vì thế bạn có thể tái sử dụng đồng hệ
thống nó theo nhiều cách khác.
Người hâm mộ cao trong người hâm mộ cao trong đề cập đến việc có một số các lớp học cao
sử dụng một lớp. Người hâm mộ cao trong đó một non nớt hệ thống đã được thiết kế để làm
cho tiện ích áp dụng tốt các lớp học ở các cấp thấp trong hệ thống.

05619670 C.81, tháng tư hôm thứ ba fmPage 12 năm 2011, 2:30 PM


5.2 chìa khóa khái niệm thiết kế 81
để- medium thấp người hâm mộ thấp để- medium người hâm mộ có nghĩa là có một lớp sử
dụng thấp để- medium số các lớp học khác. Người hâm mộ cao (hơn 7) cates indi- rằng một
lớp học sử dụng một số lớn trong các lớp học khác và có thể vì thế có thể phức tạp quá mức.
Nhiều nhà nghiên cứu về nguyên tắc cơ bản của người hâm mộ thấp là có lợi cho dù bạn đang
xem xét một số lề thói hàng ngày được gọi là từ bên trong một thói quen hay số lượng các lớp
học được sử dụng trong một lớp học (Thẻ và năm 1990; Basili thủy tinh, và Melo Briand, năm
1996).
Có tính di động có tính di động có nghĩa là thiết kế hệ thống để bạn có thể dễ dàng di chuyển
nó cho môi trường khác.
Leanness Leanness có nghĩa là thiết kế các hệ thống sao mà nó không có thêm phần (Wirth
1995, McConnell năm 1997). Voltaire nói rằng một cuốn sách đã được hoàn thành không khi
không hơn có thể được thêm vào nhưng khi không hơn không thể lấy đi. Trong phần mềm, điều
này đặc biệt đúng vì mã thêm phải được phát triển, xem xét, được kiểm tra, và được xem là khi
người khác điều lệ là sửa đổi. Phiên bản phần mềm tương lai phải giữ ngược- tương thích với
các mã thêm. Câu hỏi là "chết người thì dễ dàng, vì vậy chúng ta sẽ làm tổn thương do lắp đặt
nó?" có nghĩa là Stratification Stratification cố giữ cho các mức độ phân hủy strati- fied để bạn
có thể xem hệ thống ở bất kỳ một cấp và lấy một ô xem nhất quán.
Thiết kế hệ thống để bạn có thể xem nó ở một mức độ mà không có nhúng vào mức độ khác.
Cross-Reference cho nhiều ví dụ, nếu bạn đang viết một hệ thống mới mà phải sử dụng nhiều
già đi, bài tệ
trong làm việc với hệ thống cũ, mã thiết kế, viết một lớp của hệ thống mới tới cùng với thấy
đoạn, "Refactor 24,5- ing chiến lược." mã cũ. Thiết kế các lớp để nó trốn kém chất lượng mã
cũ, hiện tại- ing kiên trì tập hợp các dịch vụ cho các lớp mới hơn. Sau đó có phần còn lại của hệ
thống sử dụng lớp đó hơn là mã cũ. Những tác dụng có lợi của stratified thiết kế như thế nào
trong một trường hợp ở (1) Nó compartmentalizes những thứ hỗn độn của mã xấu và (2) Nếu
bạn đã từng được phép vứt bỏ mọi mối mã cũ hoặc refactor nó, bạn không cần sửa đổi mã mới
nào trừ những lớp giao diện.
Một espe Cross-Reference- kỹ thuật chuẩn càng một hệ thống phụ thuộc vào từng mảnh lạ,
càng
có giá trị cially intimidat- loại stan- ing nó sẽ cho ai đó cố gắng để hiểu được nó lần đầu tiên.
Thử toàn bộ dardization là việc sử dụng các mẫu thiết kế, mà là một cảm giác quen thuộc hệ
thống bằng cách sử dụng chuẩn hoá, cách tiếp cận chung.
Thảo luận trong "Tìm Com- t2 các mẫu thiết kế" trong đoạn 5. 3.

82 Chương 5: Thiết kế trong việc xây dựng


các mức độ của
thiết kế là cần thiết kế một vài cấp độ khác nhau của những chi tiết trong 1 hệ thống phần mềm.
Một số công nghệ thiết kế- niques áp dụng ở tất cả các cấp, và một số áp dụng ở chỉ 1 hoặc 2.
Tìm 5-2 cho thấy mức độ.
1 hệ thống phần mềm
2 hệ thống con vào gói/Division
3 loại ra các Division gói trong vòng
4 Division vào dữ liệu và lề thói hàng ngày trong các lớp học
5 thói quen nội bộ thiết kế
5-2 tìm được nồng độ các thiết kế trong một chương trình. Hệ thống (1) Đầu tiên là tổ chức
thành các hệ thống con (2). Những hệ thống con đang phân chia thành các lớp học thêm (3), và
các lớp học được chia thành thói quen hàng ngày và dữ liệu (4). Bên trong thói quen của mỗi
cũng thiết kế (5).
Cấp 1: Hệ thống Phần mềm
nói cách khác-và đây là mức 1 là toàn bộ hệ thống. Một số các lập trình viên nhảy khỏi hệ thống
đá-nguyên tắc đặc cấp trên thiết kế các lớp học, nhưng nó thường có lợi cho việc nghĩ qua ở
mức cao hơn mà toàn thể Latin cor- poration là Galaxywide suc- sự pha trộn các lớp học,
chẳng hạn như hệ thống con gói.
cess hay là sáng lập-thiết kế cơ bản của họ sai sót mức 2: hệ thống con vào hoặc Division
chuyên dụng
hoàn toàn bị che khuất bởi hời hợt thiếu sót thiết kế của họ. Sản phẩm chính của thiết kế ở
mức độ này là sự nhận dạng của tất cả hệ thống con lớn. Các
- hệ thống con có thể Douglas Adams: cơ sở dữ liệu lớn, giao diện người dùng, kinh doanh,
lệnh bá"™ giải Thã-ch,

5.2 chìa khóa khái niệm 83


động cơ bản báo cáo thiết kế, và vân vân. Đại tá, hoạt động thiết kế ở mức độ này đang quyết
định làm thế nào để parti--đổi chương trình vào hệ thống con lớn và xác định cách mỗi một hệ
thống phụ là phép sử dụng hệ thống con nhau. Division ở mức độ này thường cần trên bất kỳ
dự án lâu hơn một vài tuần. Trong mỗi một hệ thống phụ, các phương pháp khác nhau của thiết
kế có thể được sử dụng-việc lựa chọn tốt nhất vừa vặn với phương pháp mà mỗi phần của hệ
thống. Trong hình 5- 2, thiết kế ở mức độ này là đánh dấu bằng một 2.
Đặc biệt quan trọng ở mức độ này chính là quy tắc về việc làm thế nào các hệ thống con khác
nhau có thể giao tiếp. Nếu tất cả hệ thống con có thể liên lạc với tất cả hệ thống con khác, bạn
mất những lợi ích của việc tách biệt chúng hay không. Hệ thống con làm cho mỗi ý nghĩa bởi
hạn chế- ing truyền thông.
Giả sử, ví dụ như bạn định nghĩa một hệ thống có 6 hệ thống con, như được nêu trong đường
số 6- ure ngược. Khi không có luật lệ, quy luật thứ hai của nhiệt động lực học sẽ phổ biến và
entropy của hệ thống sẽ tăng. Một cách mà trong đó entropy tăng là, không có bất kỳ hạn chế
việc giao tiếp giữa hệ thống con, communica--đổi sẽ diễn ra trong một cách không hạn chế,
trong hình rút ngắn tỉ số xuống 5-4.
Giao diện đồ họa người dùng
lưu trữ dữ liệu các lớp học cấp ứng dụng
Enterprise-Level kinh doanh công cụ quy tắc
tìm ngược một ví dụ về một hệ thống có 6 hệ thống con.
Giao diện đồ họa người dùng
lưu trữ dữ liệu các lớp học cấp ứng dụng
Enterprise-Level kinh doanh công cụ quy tắc
tìm rút ngắn tỉ số xuống 5-4 một ví dụ về những gì sẽ xảy ra với không hạn chế về
intersubsystem truyền thông.

84 Chương 5: Thiết kế trong việc xây dựng


như bạn có thể thấy, mọi hệ thống con chỉ kết thúc khi liên lạc trực tiếp với mỗi hệ thống con
khác, mà làm dấy lên một số những câu hỏi quan trọng:
■ Bao nhiêu phần khác nhau của một nhà phát triển hệ thống cần hiểu ít nhất một chút thay đổi
điều gì trong hệ thống con đồ họa?
■ Điều gì xảy ra khi bạn cố gắng sử dụng những quy tắc kinh doanh trong hệ thống khác?
■ Điều gì xảy ra khi bạn đặt một giao diện người dùng mới trên hệ thống, mỗi- haps một dòng
UI cho các mục đích kiểm tra?
■ Điều gì xảy ra khi bạn muốn đặt lưu trữ dữ liệu trên máy từ xa?
Bạn có thể nghĩ ra dòng này giữa như hệ thống con vòi nước với nước chảy qua chúng. Nếu
bạn muốn chạm vào và rút ra một hệ thống con, đó là hệ thống con sẽ có một số vòi nước
được gắn với nó. Càng vòi nước bạn phải ngắt kết nối và tái kết nối, càng bị ướt anh sẽ được
như thế. Anh muốn kiến trúc sư hệ thống của bạn để nếu kéo ra một hệ thống con sử dụng
những nơi khác, thì bạn sẽ không có nhiều vòi nước tái kết nối và những vòi nước sẽ tái kết nối
một cách dễ dàng.
Với forethought, tất cả những vấn đề này có thể được giải quyết với công việc thêm chút. Cho
phép hệ thống con giao tiếp giữa chỉ trên một "cần biết"-và cơ sở đã cược- Sáng có 1 lý do
nào đó. Chưa chắc thì nó dễ dàng hơn để hạn chế sớm và thư giãn nó giao tiếp sau đó nữa là
thư giãn nó sớm và sau đó cố gắng mạnh lên sau khi bạn đã được mã hóa vài trăm
intersubsystem cuộc gọi. Tìm 5-5 cho thấy một vài thông tin liên lạc hướng dẫn đó có thể thay
đổi hệ thống miêu tả trong hình rút ngắn tỉ số xuống 5-4.
Giao diện đồ họa người dùng
lưu trữ dữ liệu các lớp học cấp ứng dụng
Enterprise-Level kinh doanh công cụ
tìm 5-5 Quy tắc với một vài luật giao tiếp, bạn có thể đơn giản hóa các tương tác giữa khẩu sig-
nificantly hệ thống con.
Để giữ những kết nối dễ hiểu và duy trì, err bên quan hệ intersubsystem đơn giản. Mối quan hệ
đơn giản nhất là phải có một hệ thống con gọi rou- tines ở một nơi khác Một mối quan hệ phức
tạp hơn là phải có một hệ thống con chứa các lớp học từ một người nữa. Mối quan hệ việc
nhiều nhất là phải có các lớp học về một tiểu- thừa kế từ các lớp học về hệ thống khác.

5.2 chìa khóa khái niệm 85


một thiết kế quy luật chung là một hệ thống cấp tìm 5-5 biểu đồ như thế nên làm acyclic biểu
đồ. Nói cách khác, một chương trình không nên chứa bất kỳ mối quan hệ trong đó lớp hình tròn
một lớp B, tầng lớp sử dụng B lớp C, và sử dụng lớp C lớp A.
lớn sử dụng các chương trình và gia đình của các chương trình thiết kế, ở mức độ hệ thống
con sẽ tạo nên sự khác biệt. Nếu bạn tin rằng chương trình của ông là đủ nhỏ để bỏ qua một
hệ thống phụ cấp thiết kế, ít nhất làm là quyết định bỏ qua cấp độ của thiết kế một tư duy ý thức
một.
Hệ thống con in chung một vài loại xuất hiện trở lại và lại hệ thống con khác nhau- hệ thống ent
trong. Dưới đây là một số trong những hoài nghi thông thường.
Cross-Reference cho nhiều doanh nghiệp kinh doanh. Nguyên tắc là luật, những quy định, các
chính sách, và các quy trình
trên kinh doanh simplifying logic quý vị mã hóa thành một hệ thống máy tính. Nếu bạn đang viết
một hệ thống trong lương, bạn bằng cách diễn đạt mong muốn nó ở trên bàn... thấy Chương
18, "Table-Driven có thể mã hoá quy tắc từ sở thuế vụ về số chi phí hợp lệ withholdings và
phương pháp." Các thuế suất ước tính. Thêm các quy định về hệ thống trong lương có thể đến
từ một hợp đồng liên minh lựa chọn làm thêm giờ suất kỳ nghỉ, và ngày lễ trả, và vân vân. Nếu
bạn đang viết một chương trình trích bảo hiểm xe suất, luật lệ có thể đến từ chính phủ quy định
về trách nhiệm cần thiết trang bìa, tỷ lệ actuarial bàn, hoặc có tiền mặt hạn chế
tạo ra một hệ thống con giao diện người dùng để tách thành phần giao diện người dùng để giao
diện người dùng có thể tiến hóa mà không gây hại cho phần còn lại của chương trình. Trong
hầu hết các trường hợp, một hệ thống con giao diện người dùng sử dụng một vài hệ thống con
in hoặc các lớp học cấp dưới cho giao diện GUI KDEPRINT, giao diện dòng lệnh, các hoạt
động thực đơn, quản lý cửa sổ, giúp hiệu hệ thống- tem, và vân vân.
Cơ sở dữ liệu bạn có thể che giấu truy cập việc triển khai chi tiết để truy cập một cơ sở dữ liệu
vậy mà hầu hết của chương trình này không cần phải lo lắng về những chi tiết của manipulat
hỗn độn- ing cấu trúc ở mức độ thấp và có thể đối phó với dữ liệu về cách nó được sử dụng ở
mức độ vấn đề kinh doanh. Hệ thống con rằng việc triển khai chi tiết cung cấp một ẩn valu-- có
thể lấy thông tin ở cấp độ làm giảm một chương trình là sự phức tạp. Họ centralize dữ liệu- căn
cứ hoạt động ở một chỗ và giảm khả năng lỗi sai trong làm việc với dữ liệu.
Họ làm cho nó dễ dàng để thay đổi cấu trúc thiết kế cơ sở dữ liệu mà không làm thay đổi hầu
hết của chương trình.
Gói dependencies hệ thống điều hành dependencies vào một hệ thống con vì lý do bạn gói
dependencies phần cứng. Nếu bạn đang phát triển một pro- gram đối với Microsoft Windows, ví
dụ, tại sao lại hạn bạn cho Windows ronment envi-? Tách Windows cuộc gọi vào một hệ thống
con giao diện Windows. Nếu anh sau muốn chuyển chương trình của ông với hệ điều hành
Mac hay Linux, tất cả các bạn sẽ phải thay đổi hệ thống con là giao diện. Một hệ thống con giao
diện có thể là quá nhiều lần để bạn imple- ment của mình, nhưng hệ thống con như vậy đang
có sẵn ở bất kỳ của một vài com- mercial c thae° viá"‡n mã.

86 Chương 5: Thiết kế trong việc xây dựng


trình độ 3: loại ra các Division
đọc thêm cho một thiết kế tốt ở mức độ này bao gồm việc nhận biết tất cả các lớp học trong hệ
thống. Ví dụ, dữ liệu-
thảo luận về một căn cứ-hệ thống con giao diện cơ sở dữ liệu có thể xa hơn nữa phân vùng
thành các lớp học truy cập dữ liệu và thiết kế, thấy lẹ làng kỹ thuật cơ sở dữ liệu (2003). cố
chấp Ambler khuôn khổ các lớp học cũng như cơ sở dữ liệu siêu dữ liệu. Tìm 5-2, mức độ 3,
cho thấy cách mà một người từ tầng 2hệ thống con của có thể chia thành các lớp học, và nó
chỉ ra rằng các hệ thống con 3 hiện ra ở mức 2 cũng thấy xác chết lơ lửng trên các lớp học vào.
Chi tiết về các cách mà mỗi lớp tương thích với phần còn lại của hệ thống này cũng được xác
định như những môn được chỉ định. Đặc biệt, lớp học là giao diện được định nghĩa.
Nhìn chung, thiếu tá hoạt động thiết kế ở mức độ này là việc bảo đảm rằng tất cả các hệ thống
con đã thấy xác chết lơ lửng trên đến độ chi tiết ổn, đủ để bạn có thể áp dụng phần của họ như
những lớp.
Cross-Reference chi tiết cho sự phân loại ra các hệ thống con thường cần trên bất kỳ dự án mà
dẫn
trên cao đặc điểm của- dài hơn một vài ngày. Nếu dự án đang rất lớn, như division là rõ ràng
khác biệt với chất lượng các lớp học, thấy Chương 6, "Các lớp học làm việc." partitioning
chương trình từ Tầng 2. Nếu dự án đang rất nhỏ, bạn có thể di chuyển trực tiếp từ toàn bộ hệ
thống-nhìn về mức 1 để xem những môn từ Tầng 3.
Các lớp học, so với đối tượng một chìa khóa khái niệm trong hướng đối tượng thiết kế là để tạo
sự khác biệt lớn giữa các vật thể và các lớp học. Một vật thể là thực thể cụ thể nào đó tồn tại
trong pro- gram tại thời gian chạy. Một lớp học những thứ tĩnh bạn nhìn vào trong chương trình
niêm yết. Một đồ vật này là điều động với giá trị và các thuộc tính cụ thể bạn thấy khi bạn chạy
chương trình. Ví dụ, bạn có thể tuyên bố một người có lớp tên thuộc tính của, tuổi tác, giới tính,
và vân vân. Vào lúc chạy lần bạn sẽ có những đồ vật nancy, hank, diane, tony, và vì vậy trên-
đó là, những trường hợp cụ thể của lớp học. Nếu bạn quen với cơ sở dữ liệu về mặt, nó cũng
giống như sự khác biệt này giữa "giản đồ" và "chẳng hạn." Bạn có thể nghĩ của lớp học như đồ
cắt cookie và vật thể như cookie. Cuốn sách này sử dụng các điều khoản chính thức và thông
thường đề cập đến các lớp học và vật thể ít nhiều inter- changeably.
Tầng 4: Division vào lề thói hàng ngày
thiết kế ở mức độ này bao gồm chia mỗi lớp vào lề thói hàng ngày. Lớp học được định nghĩa
giao diện ở mức độ 3 sẽ định nghĩa một số trong những lề thói hàng ngày. Thiết kế ở tầng 4 sẽ
chi tiết lớp là riêng tư lề thói hàng ngày. Khi bạn xem xét các chi tiết của thói quen hàng ngày
bên trong một lớp học, bạn có thể thấy rằng nhiều lề thói hàng ngày là đơn giản nhưng vài hộp
được tạo ra bởi hierarchi- cally thói quen hàng ngày có tổ chức, chúng đòi hỏi vẫn có thêm thiết
kế.
Hành động cần xác định lớp là hoàn toàn lề thói hàng ngày thường dẫn hiểu biết tốt hơn của
lớp học là giao diện, và điều này gây ra những thay đổi tương ứng với giao diện-đó là sự thay
đổi ở mức độ 3.
Mức độ phân hủy và thiết kế thường sang trái cho các cá nhân lập trình viên, và nó cần thiết
trong bất kỳ dự án đó tốn nhiều hơn một vài tiếng đồng hồ. Nó không cần phải làm chính thức,
nhưng nó ít nhất cần được giải quyết tâm thần.

5,3 Thiết Kế Khối nào: Heuristics 87


cấp 5:
Cross-Reference thiết kế thói quen nội bộ thiết kế để tìm chi tiết ở mức độ thường xuyên có
chửi thề. bao gồm ra chức năng chi tiết của indi-
tiếp tục tạo ra chất lượng cao rou- vidual lề thói hàng ngày. Thói quen nội bộ thiết kế thường để
lại cho các cá nhân, thấy tines lập trình viên chương 7, "- lề thói hàng ngày, chất lượng cao" và
Chap- làm việc trên một cá nhân bình thường. Thiết kế này bao gồm sự hoạt động như viết
Sáng, "Chương Trình phòng thủ 8- pseudocode, nhìn lên các thuật toán sách là việc quyết
định cách tham chiếu để sắp xếp
ming." các đoạn văn của một thói quen thường nhật, mật mã và viết-mã ngôn ngữ lập trình.
Mức độ được thiết kế là thường xuyên làm mặc dù đôi khi nó được thực hiện một cách vô thức
và kém hơn là một cách có ý thức và à. Trong hình 5-2, thiết kế ở mức độ này là đánh dấu
bằng một 5.
5. 3 Khối nào: Heuristics thiết kế
các nhà phát triển phần mềm có xu hướng thích câu trả lời của chúng ta cắt và chùi: "làm A, B,
C, và và X, Y, Z sẽ theo sau mỗi lần." Chúng tôi tự hào trong quá trình học hỏi bí ẩn bộ bước
mà sản xuất tạo hiệu ứng, và chúng ta thành bực mình khi hướng dẫn này không hoạt động
được quảng cáo.
Mong muốn được định trước rất thích hợp cho hành vi máy tính pro- gramming chi tiết, nơi loại
giám sát chặt chẽ đến chi tiết khiến hoặc vi một chương trình. Nhưng thiết kế phần mềm là một
câu chuyện khác.
Bởi vì những thiết kế nondeterministic, ứng dụng điêu luyện, hiệu quả của heuristics đặt là hoạt
động cốt lõi trong thiết kế phần mềm tốt. Những phần phụ mô tả một số- ber của heuristics-để
suy nghĩ về một bản thiết kế là tạo ra sự thấu hiểu thiết kế tốt. Bạn có thể sẽ nghĩ về heuristics
như cho các thử nghiệm ở nét dẫn "phép thử và sai sót." Bạn chắc chắn có chạy xuyên qua
một vài trong số những thứ này trước đây. Vì vậy, sau đây phần phụ mô tả mỗi heuristics về
mặt kỹ thuật chính của phần mềm bắt buộc: là quản lý sự phức tạp.
Tìm những vật thể Real-World
đừng hỏi gì hệ thống đầu tiên đầu tiên và phương pháp phổ biến nhất để thiết kế các giải pháp
thay thế là nhận dạng "bằng
này, mà hãy hỏi những gì nó làm nó cho! Cuốn sách" hướng tiếp cận đối tượng, tập trung vào
việc nhận biết thế giới thực và syn- - Ông Bertrand Meyer thetic vật thể.
Các biện pháp trong thiết kế với các vật thể
Cross-Reference cho nhiều xác định những đồ vật và ■ các thuộc tính của họ (phương pháp và
dữ liệu).
chi tiết về việc thiết kế các lớp học, sử dụng chương 6, ■ thấy xác định điều chúng ta có thể
làm để mỗi vật.
"Các lớp học làm việc." ■ Xác định vật thể mỗi có khả năng làm đối tượng khác.
■ xác định những bộ phận của mỗi vật thể mà sẽ hiện hữu đối với các vật dụng khác-phần nào
sẽ được công chúng và sẽ được riêng tư.
■ Định nghĩa của đối tượng mỗi giao diện công cộng.

88 Chương 5: Thiết kế trong việc xây dựng


những bước nào không nhất thiết phải thực hiện theo thứ tự, và họ thường lặp lại. Lặp lại là
quan trọng. Mỗi bước được tóm tắt bên dưới.
Nhận diện những đồ vật và các thuộc tính của họ các chương trình máy tính thường dựa trên
những thực thể trong thế giới thực. Ví dụ, bạn có thể có căn cứ một thời gian-hệ thống hoá đơn
trên thế giới thực, khách hàng, nhân viên, và các hoá đơn timecards. Tìm cho thấy một vật thể
hoá hay ở các của hiệu bán ô xem hướng của một hệ thống hoá đơn thanh toán.
Nhân viên khách tån hà tån billingAddress accountBalance tựa billingRate currentBillingAmount
EnterPayment GetHoursForMonth () () ... ...
Timecard Bill 11 1 ‫ ٭ ٭‬billingEmployee ‫ ٭‬clientToBill clientToBill
0..1 hoá đơn projectCode billingRecords BillForClient () ... ‫ ٭‬giờ billDate ng¡y
...
Tìm hệ thống hoá đơn thanh toán này hoá hay ở các của hiệu bán được cấu tạo từ 4 đối tượng
lớn. Những đồ vật đã được
phổ thông cho ví dụ này.
Việc nhận biết các thuộc tính của những đồ vật là không phức tạp hơn trong việc xác định bản
thân đồ vật. Mỗi vật thể lạ nét đặc trưng mà có liên quan tới các chương trình máy tính.
Ví dụ, trong suốt thời gian hệ thống hoá đơn, vật thể một nhân viên có tên là gì, một tựa đề, và
một tỷ lệ hoá đơn thanh toán. Một vật thể khách hàng có tên là gì, một địa chỉ, và một hoá đơn
thanh toán số tiền còn lại trong trương mục. Một vật thể lạ hoá đơn thanh toán một bill sâ tiën, 1
khách hàng hoá đơn thanh toán, một ngày tên, và vân vân.
Vật thể trong một hệ thống giao diện người dùng đồ họa sẽ gồm có windows, hộp thoại, nút,
các phông chữ, và các công cụ vẽ. Phải xem xét kỹ hơn của vấn đề có thể tạo ra những lựa
chọn tốt hơn miền phần mềm cho các vật thể hơn một đối một lập bản đồ để các vật thể trong
thế giới thực, nhưng các vật thể trong thế giới thực là một nơi rất tốt để bắt đầu.
Xác định điều chúng ta có thể làm để mỗi một loạt các hoạt động vật có thể được mỗi hình
thành trên mỗi vật thể-. Trong hệ thống hoá đơn thanh toán hoá hay ở các của hiệu bán được
nêu trong Hình, một công nhân vật có thể phải thay đổi trong tieâu hoặc tỷ lệ hoá đơn, một
khách hàng có thể có tên của nó đối tượng hoặc thay đổi địa chỉ hoá đơn, và vân vân.
Xác định mỗi vật này là được phép làm gì để đối tượng khác bước này chỉ vì nó nghe như thế
này. Hai thứ đồ vật có thể làm chung với nhau là kết thúc chuyện và di sản của cháu. Đối tượng
mà có thể chứa các vật dụng khác mà? Đối tượng mà có thể thừa kế
5,3 Khối thiết kế: Heuristics 89 mà
từ đó các đối tượng khác? Trong hình, một vật thể timecard hoá hay ở các của hiệu bán có thể
chứa một công nhân vật thể và một khách hàng, và một vật thể bill có thể chứa một hay nhiều
timecards. Ngoài ra, một dự luật có thể cho thấy một khách hàng đã được khai mạc, và một
khách hàng có thể nhập khoản thanh toán một dự luật chống lại. Một hệ thống phức tạp hơn sẽ
gồm có tương tác thêm.
Cross-Reference để tìm chi tiết xác định những bộ phận của mỗi vật thể mà sẽ hiện hữu đối với
các vật dụng khác một trong những chìa khóa
các lớp học, và thiết kế thông tin quyết định đó trong việc xác định những bộ phận của một vật
thể mà nên phải được công bố và những lẩn trốn, thấy "giấu bí mật thông tin đang trốn ()" trong
cần được giữ kín. Quyết định này làm cho cả hai phương pháp và dữ liệu.
Đoạn 5. 3. Định nghĩa mỗi giao diện của vật thể xác định dấu định giới chuyên nghiệp, syntactic
lập trình, ngôn ngữ--giao diện để mỗi mức độ phản đối. Dữ liệu và phương pháp của vật thể
exposes với mọi vật nào khác được gọi là "công cộng giao diện của vật thể." Những bộ phận
của vật thể mà nó để bắt nguồn thông qua exposes vật di sản được gọi là "giao diện được bảo
vệ của vật thể." Hãy nghĩ về cả hai loại của giao diện.
Khi bạn kết thúc sẽ thông qua các biện pháp để đạt được một vật thể cấp trên hệ thống hướng
tổ chức bạn sẽ iterate theo 2 cách. Bạn sẽ iterate lên trên đỉnh hệ thống cấp organiza--đổi để có
được một tổ chức tốt hơn các lớp. Bạn còn iterate trên mỗi trong số các tiết học mà bạn đã
được định nghĩa, lái xe thiết kế của mỗi lớp để một cấp độ chi tiết hơn.
Form phù hợp các khái niệm trừu tượng
trừu tượng là khả năng muốn tham gia với một khái niệm trong khi lờ đi một phần an toàn hệ
thống xử lý chi tiết chi tiết khác nhau ở cấp độ khác nhau. Bất cứ khi nào bạn làm việc với một
aggre- kia, anh ta làm việc với trừu tượng. Nếu bạn ám chỉ với một vật thể như là một "nhà"
hơn là một sự kết hợp của thủy tinh, gỗ, và móng tay, cậu làm trừu tượng. Nếu anh đề cập đến
một tập hợp của những ngôi nhà như một "thị trấn," các bạn đang thực hiện một trừu tượng.
Căn cứ các lớp học được các khái niệm trừu tượng cho phép bạn tập trung vào các thuộc tính
chung của một nhóm có chiết xuất các lớp học, và bỏ qua các chi tiết của các lớp học cụ thể
trong khi bạn đang làm việc trên căn cứ lớp. Một lớp học tốt giao diện là trừu tượng mà cho
phép bạn tập trung cho giao diện mà không cần phải lo lắng về những hoạt động nội bộ của lớp
học. Inter- mặt để một thói quen được cung cấp cùng hưởng lợi ở một mức thấp chi tiết, và
giao diện để thiết kế một hệ thống con hay gói cung cấp có ích cho ở mức cao độ chi tiết.
Từ một góc nhìn của sự phức tạp, hiệu trưởng lợi ích của trừu tượng là nó cho phép bạn bỏ
qua các chi tiết không liên quan. Hầu hết các vật thể trong thế giới thực đã có sẵn các khái
niệm trừu tượng, đại loại thế. Như đã đề cập, một ngôi nhà là trừu tượng của windows, cánh
cửa, siding, hệ thống dây mối hàn, được phần cách điện, và một cách riêng biệt của tổ chức
cho chúng. Một cánh cửa đó có lần lượt trừu tượng của một sự sắp xếp của một hình chữ nhật
đặc biệt miếng vải với bản lề và tay nắm cửa. Và tay cầm là trừu tượng đặc biệt của một sự
hình thành của kèn, nickel, sắt, hoặc thép.
90 Chương 5: Thiết kế trong việc xây dựng
mọi người sử dụng trừu tượng liên tục. Nếu bạn phải đối mặt với từng gỗ từ sợi, phân tử, và
thép quả banh phân tử mỗi lần bạn dùng cửa trước, bạn cũng khó lòng làm nó vào hoặc ra khỏi
nhà bạn mỗi ngày. Như tìm 5-7 gợi ý, trừu tượng là một phần lớn trong cách chúng ta đối phó
với sự phức tạp trong thế giới thực.
Tìm 5-7 Trừu tượng cho phép bạn lấy một đơn giản hơn 1 khái niệm phức tạp.
Cross-Reference cho nhiều người hơn các nhà phát triển phần mềm đôi khi xây dựng các hệ
thống ở gỗ chất xơ, lớp sơn-phân tử,
chi tiết về nghĩa trừu tượng và thép-mức độ phân tử. Điều này làm cho hệ thống phức tạp và trí
tuệ lớp quá mức, thấy "Tốt thiết kế trừu tượng" trong đoạn 6. 2. thật khó để quản lý. Khi các lập
trình viên thất bại trong việc cung cấp các khái niệm trừu tượng, lập trình lớn hơn bản thân hệ
thống đôi khi thất bại để vượt qua những cửa trước.
Các lập trình viên tạo ra các khái niệm trừu tượng tốt ở thói quen của giao diện-, tầng lớp-giao
diện cấp cấp, và giao diện-viên cấp gói nói cách khác, tay cầm, mức độ cửa, mức độ và mức
độ nhà-và hỗ trợ an toàn hơn và nhanh hơn việc lập trình.
Việc triển khai chi tiết
Encapsulation chứa đựng nhấc nơi trừu tượng lá đi. Trừu tượng nói, "Các bạn chỉ được phép
nhìn vào một vật thể ở mức cao độ chi tiết." Encapsulation nói, "Hơn nữa, bạn không được
phép nhìn vào một vật thể ở bất kỳ độ chi tiết."
Nên tiếp tục nhà đất-phép loại suy: encapsulation vật liệu là một cách để nói rằng bạn có thể
nhìn vào bên ngoài nhà nhưng bạn không có đủ gần để làm ra khỏi cửa là chi tiết. Bạn có
quyền biết là có một cánh cửa, và bạn được quyền để biết liệu Cửa chính mở hoặc đóng cửa,
nhưng bạn không được phép để biết liệu cửa phải được làm bằng gỗ, bằng sợi thủy tinh, thép,
hoặc một số chất liệu nào khác, và cậu đã chắc chắn sẽ không được phép nhìn vào từng gỗ
chất xơ.
Như tìm 5-8 gợi ý, encapsulation giúp để quản lý sự phức tạp bởi cấm những bạn nhìn vào sự
phức tạp. Phần có tựa đề "Encapsulation tốt" trong đoạn 6. 2 pro- vides nền trên encapsulation
hơn được áp dụng thiết kế đến lớp học.

5,3 Thiết Kế Khối nào: Heuristics 91


Encapsulation 5-8 Tìm nói rằng, không chỉ bạn được cho phép một đơn giản hơn 1 khái niệm
phức tạp, bạn không được nhìn vào bất kỳ chi tiết cụ thể về khái niệm phức tạp.
Cái mà bạn thấy là cái bạn có được nó là tất cả những gì cô-lấy!
Kế thừa-Di sản khi thiết kế đơn giản hoá
trong thiết kế một hệ thống phần mềm, bạn sẽ thường tìm vật này rất giống các vật dụng khác,
ngoại trừ một vài khác biệt. Trong một hệ thống kế toán, chẳng hạn như, bạn có thể có cả 2
toàn thời gian và nhân viên bán thời gian. Hầu hết các dữ liệu liên quan đến cả hai loại công
nhân viên đó giống nhau, nhưng một số khác nhau. Đối tượng trong chương trình ạnh- ming,
bạn có thể xác định một tướng loại nhân viên và sau đó định nghĩa nhân viên toàn thời gian là
tướng công nhân viên, ngoại trừ một vài sự khác biệt, và nhân viên bán thời gian cũng như
nhân viên tướng quân, ngoại trừ một vài khác biệt. Khi một hoạt động trên một nhân viên không
phụ thuộc vào kiểu nhân viên, phẫu thuật điều khiển như thể những nhân viên chỉ là một nhân
viên tướng quân. Khi chiến dịch này phụ thuộc vào những nhân viên này chính là toàn thời gian
hoặc bán thời gian, phẫu thuật điều khiển khác đi.
Định nghĩa sự tương đồng và những khác biệt giữa những vật này được gọi là "di sản của
cháu." Bởi vì phần cụ thể-thời gian và toàn thời gian nhân viên kế thừa đặc điểm của đại
tướng-kiểu nhân viên.
Những lợi ích của di sản của cháu là nó hoạt động synergistically với khái niệm abstrac--đổi.
Trừu tượng các hợp đồng với các vật thể ở cấp độ khác nhau của những chi tiết. Nhớ lại
những cánh cửa đó là một bộ sưu tập của một số dạng phân tử ở một mức độ nào, một tập
hợp các sợi gỗ ở đó, và những thứ mà sẽ khiến cho trộm cắp ra khỏi nhà của mình ở cấp độ kế
tiếp.
Gỗ đã thuộc tính nhất định-ví dụ, bạn có thể cắt nó với một thấy hay keo dán nó bằng gỗ dán-
và hai nhân bốn chân hoặc cedar bệnh zô có tài sản chung của gỗ cũng như một số đặc tính cụ
thể của riêng mình.
Di sản của cháu vì bạn viết lập trình đơn giản hoá một thói quen chung để xử lý bất cứ thứ gì
mà phụ thuộc vào một cánh cửa là tài sản chung và sau đó viết thói quen hàng ngày cụ thể để
xử lý cụ thể hoạt động ngày cụ thể loại cửa. Một số hoạt động, chẳng hạn như

92 Chương 5: Thiết kế trong việc xây dựng


open () hoặc gần (), có thể áp dụng cho dù cửa là một cánh cửa, cửa nội thất, và chuẩn bị sẵn
sàng để cửa, cửa, cửa Pháp màn hình, hoặc lướt cửa kính. Khả năng của một ngôn ngữ để hỗ
trợ cho hoạt động như thế open () hoặc gần () mà không biết cho đến khi thời gian chạy cửa
kiểu gì ông đang đối đầu với được gọi là "polymorphism." hướng đối tượng lan- guages như C+
+, Java, và sau đó các phiên bản của Microsoft Visual Basic hỗ trợ thừa kế- ví dụ và
polymorphism.
Di sản của cháu là một hướng của vật thể lập trình công cụ mạnh nhất. Nó có thể pro- tuyệt vời
lợi ích khi nhiệt độ rất cao được sử dụng tốt, và nó có thể làm tổn thương khi sử dụng người
bạn tuyệt vời. Để tìm chi tiết, xem "Di sản của cháu ("là một mối quan hệ")" trong đoạn 6. 3.
Giấu bí mật thông tin đang trốn) (
Thông tin đang trốn là một phần của nền tảng của cả hai thiết kế và vật thể có cấu trúc-ori-
ented thiết kế. Có cấu trúc trong thiết kế, khái niệm "hộp đen" bắt nguồn từ informa--đổi lẩn
trốn. Ạnh đối tượng trong thiết kế, nó sẽ làm tăng lên những khái niệm về encapsulation và
những mô đun cho và nó gắn liền với những khái niệm trừu tượng. Thông tin đã giấu- ing là
một trong những ý tưởng có ảnh hưởng sâu sắc trong phát triển phần mềm, và vì vậy, điều này
phần phụ khám phá nó ở độ sâu.
Thông tin đang trốn lần đầu tiên đến công chúng chú ý trong một bài báo công bố bởi David
chuẩn- nas vào năm 1972 được gọi là "tiêu chí sẽ được sử dụng trong các hệ thống bừa bãi
quốc phòng Mod- ules." Thông tin đang trốn đặc trưng bởi ý kiến của "bí mật," và triển khai các
quyết định được thiết kế một nhà phát triển phần mềm trốn trong một nơi này từ phần còn lại
của chương trình.
Trong ấn bản kỷ niệm 20 năm của người đàn ông hoang đường tháng, Fred Brooks kết luận
rằng chỉ trích của thông tin đang trốn của ông ta là một trong số ít cách mà edi đầu tiên--đổi của
cuốn sách của ông ấy đã sai. "Parnas đã đúng, và tôi đã sai về thông tin lẩn trốn," ông ấy một
(Brooks 1995). Barry Boehm báo cáo rằng thông tin đang trốn là một kỹ thuật mạnh mẽ cho loại
bỏ dàn xếp, và ông đã chỉ ra đó là chuẩn- ticularly hiệu quả trong tăng dần dần, thay đổi môi
trường cao (Boehm năm 1987).
Thông tin đang trốn là một đặc biệt mạnh mẽ dựa trên kinh nghiệm đó thì chuyện cho chính của
phần mềm Techni- cal bắt buộc bởi vì, bắt đầu với những tên của nó và trong suốt quá trình chi
tiết, nó đang trốn empha- kích cỡ sự phức tạp.
Bí mật và quyền riêng tư
trong thông tin lẩn trốn, mỗi lớp (hay gói thói quen) hoặc là đặc trưng bởi thiết kế hoặc các
quyết định được xây dựng nó trốn khỏi tất cả các lớp học khác. Bí mật có thể là một khu vực
mà là người có thể thay đổi, định dạng của một tập tin, cách một kiểu dữ liệu là imple- mented,
hay một khu vực mà cần được nhốt khỏi từ phần còn lại của chương trình đó lỗi sai trong khu
vực đó gây ra ít càng tốt. Công việc của lớp là giữ thông tin này bị ẩn và để bảo vệ riêng của nó
để sự riêng tư. Thay đổi nhỏ với một hệ thống

5,3 Thiết Kế Khối nào: Heuristics 93


có thể ảnh hưởng đến vài lề thói hàng ngày trong vòng một lớp học này, nhưng họ không nên
vượt ra khỏi lớp ripple giao diện.
Phấn đấu cho giao diện một nhiệm vụ chìa khóa lớp trong việc thiết kế một lớp học các tính
năng để quyết định xem nên được biết đến bên ngoài
hoàn toàn và mini- lớp và điều đó nên giữ bí mật. Một lớp học có thể sử dụng 25 lề thói hàng
ngày và lật tẩy mal.
- Scott Meyers chỉ có 5 trong số họ, sử dụng các 20 nội bộ. Một lớp học có thể đã sử dụng một
vài dữ liệu loại và lật tẩy không có thông tin về chúng. Khía cạnh này của lớp thiết kế cũng có
tên gọi là "visi- bility" vì nó phải có gì đó với tính năng mà của lớp học là "có thể nhìn thấy" hay
"tiếp xúc" ra- bên lớp.
Giao diện tới một lớp học nên tiết lộ càng ít càng tốt về hoạt động bên trong của nó. Như được
nêu trong Hình 5-9 tháng 10, một lớp học rất nhiều như một tảng băng: eighths 7 là dưới nước,
và bạn có thể chỉ thấy 1 thứ tám đó là trên mặt đất.
Tìm một giao diện lớp 5-9 tháng 10 đều trông giống như một mảng băng, bỏ lại hầu hết các lớp
unexposed.
Thiết kế giao diện lớp là một quá trình lặp chỉ giống như bất kỳ một khía cạnh khác của ngành
thiết kế.
Nếu bạn không có giao diện ngay lần đầu tiên, hãy thử lại vài lần cho đến khi nó ổn định.
Nếu nó không ổn định, anh cần phải thử một cách tiếp cận khác nhau.
Một ví dụ về thông tin đang trốn
giả sử bạn có một chương trình mà trong đó mỗi vật này là phải có một ID độc đáo bảo quản
trong biến thành viên được gọi là kiểm tra giấy tờ. Thiết kế một cách tiếp cận là sẽ sử dụng
integers cho chứng minh thư giả và lưu trữ ID cao nhất được gán cho đến nay trong một biến
số toàn cầu được gọi là g_maxId. Như mỗi đối tượng mới được dành cho, có lẽ trong mỗi
constructor của vật thể, bạn có thể chỉ đơn giản là sử dụng thẻ id = ++g_maxId bài phát biểu,
việc này sẽ bảo đảm một id độc đáo, và nó sẽ tăng thêm tối thiểu mã của tuyệt đối ở mỗi nơi
một vật thể được tạo ra.
Điều sai sao?

94 Chương 5: Thiết kế trong việc xây dựng


nhiều thứ có thể sai lệch. Sẽ ra sao nếu bạn muốn phạm vị của Cục dự trữ giấy chứng minh
cho các mục đích đặc biệt không? Sẽ ra sao nếu bạn muốn sử dụng nonsequential thẻ căn
cước giả để cải thiện an ninh? Sẽ ra sao nếu bạn muốn có khả năng tái sử dụng thẻ căn cước
giả của vật thể đó có bị tiêu diệt chưa? Sẽ ra sao nếu bạn muốn thêm một vụ cháy khẳng định
rằng khi bạn phân bổ giấy chứng minh hơn nhiều hơn số tối đa bạn đã lường trước? Nếu bạn
phân bổ giấy chứng minh bằng việc lan truyền id = ++g maxId c¥c léi khai khắp_chương trình
của bạn, bạn sẽ phải thay đổi mã liên quan đến từng câu khẳng định. Và, nếu chương trình của
ông là đa mạch, hướng tiếp cận sẽ không sợi chỉ-SAFE.
Cách minh giả mới được tạo ra là thiết kế một quyết định mà bạn nên che giấu. Nếu bạn dùng
cụm từ ++g_maxId trong suốt chương trình của ông, cho các bạn một cách diễn ID cre là mới-
ated, đơn giản bằng cách incrementing g_maxId. Nếu thay vì đặt id NewId = () bài phát biểu
trong suốt chương trình của ông, cháu giấu thông tin về cách minh giả mới được tạo ra. Bên
trong NewId () công việc thường nhật của bạn có thể vẫn chỉ 1 dòng mã, trở lại ( ++g_maxId )
hoặc bằng cấp tương đương, nhưng nếu anh sau quyết định trong phạm vi của một số căn
cước dự trữ cho các mục đích đặc biệt hoặc tái sử dụng giấy chứng minh cũ, bạn có thể tạo ra
những thay đổi trong công việc thường nhật của chính nó NewId ()-mà không chạm vào hàng tá
hoặc hàng trăm id NewId = tiểu bang- ments (). Không vấn đề có phức tạp bên trong những
phiên bản thỏa thuận NewId () cũng có thể trở thành, họ sẽ không ảnh hưởng đến các phần
khác của chương trình.
Bây giờ giả sử bạn phát hiện ra là cần thay đổi loại từ một số nguyên lý lịch để một dây. Nếu
bạn đã biến tuyên bố như thông tin quốc tế lây lan trong suốt chương trình của ông, id sử dụng
của NewId () thói quen hằng ngày chẳng giúp gì. Bạn sẽ vẫn phải đi qua chương trình của ông
và tạo ra hàng tá hoặc hàng trăm thay đổi.
Thêm một bí mật để che giấu là kiểu chứng minh. Bằng cách bộc lộ ra sự thật rằng giấy chứng
minh là inte- gers, bạn khuyến khích các lập trình viên để thực hiện các hoạt động số nguyên
như >, <, = lên chúng.
Trong C++, bạn có thể sử dụng sự typedef đơn giản để tuyên bố căn cước của bạn trở thành
sự IdType-một người dùng định nghĩa thuộc kiểu- quyết định để-chớ không phải là trực tiếp
thông tin quốc tế cho họ tuyên bố họ là loại thông tin quốc tế. Ngoài ra, trong C++ và các ngôn
ngữ khác bạn có thể tạo ra một lớp IdType đơn giản.
Một lần nữa, trốn thiết kế một quyết định này làm cho sự khác biệt lớn trong mã lượng bị ảnh
hưởng bởi một sự thay đổi.
Thông tin ẩn náu có ích tại tất cả các cấp thiết kế, từ việc sử dụng hằng số thay vì literals tên,
để tạo ra các loại dữ liệu, đến lớp học thiết kế, thiết kế, thói quen và tiểu- thiết kế hệ thống.
Điểm mấu chốt
hai loại
bí mật trong thông tin đang trốn bí mật rơi vào hai trại chung:
lẩn trốn sự phức tạp để ■ não của bạn không phải đối mặt với nó trừ khi bạn là đặc biệt quan
tâm đến nó
trốn nguồn ■ thay đổi vậy khi thay đổi xảy ra, tác dụng dịch bài hát

5,3 Khối nào: Heuristics thiết kế 95


nguồn bao gồm các loại dữ liệu phức tạp sự phức tạp, cấu trúc tập tin, xét nghiệm, tham gia
các thuật toán luận lý, và vân vân. Một danh sách các nguồn toàn diện thay đổi này được mô tả
sau trong chương này.
Rào cản đối với thông tin
thêm đọc phần ẩn náu trong một vài trường hợp, thông tin này thực sự không thể trốn ở đâu,
nhưng hầu hết những rào cản trong
đoạn này là thông tin đang trốn đang thích nghi khối tinh thần được tạo nên từ những thói quen
sử dụng các kỹ thuật khác. từ "Thiết kế phần mềm để tạo điều kiện dễ dàng và giảm sút."
(Phần mở rộng Parnas năm 1979). Sự phân bố của thông tin quá mức cùng một rào chắn với
thông tin đang trốn là một sự phân bố của thông tin quá mức trong suốt một hệ thống. Bạn có
thể có khó- mã hóa nghĩa đen 100 trong suốt một hệ thống. Sử dụng 100 như một nghĩa đen
decentralizes tham chiếu- ences với nó. Như thế thì tốt hơn để che giấu những thông tin ở một
nơi, trong một hằng số MAX_có lẽ, giá trị mà nhân viên là thay đổi trong một chỗ.
Một ví dụ khác của sự phân phối thông tin là interleaving tương tác với người sử dụng trong
suốt một hệ thống. Nếu sự tương tác thay đổi chế độ-nói, từ một giao diện GUI kdeprint để một
giao diện dòng lệnh-hầu như tất cả mọi mã sẽ phải được quốc phòng MOD- ified. It's better tập
trung được sự tương tác nào của người dùng trong một lớp học, hoặc hệ thống con, đóng gói
bạn có thể thay đổi mà không ảnh hưởng đến toàn bộ hệ thống.
Cross-Reference cho nhiều thí dụ khác sẽ là một yếu tố dữ liệu toàn cầu-có lẽ một loạt các
nhân viên
truy cập dữ liệu toàn cầu trên dữ liệu với 1000 yếu tố đó là truy cập vài tối đa trong suốt một
chương trình. Nếu những ý kiến ủng hộ- thông qua giao diện, thấy lớp "sử dụng thói quen hàng
ngày gram sử dụng truy cập dữ liệu toàn cầu trực tiếp, thông tin về dữ liệu của mục
implementa-
thay vì dữ liệu toàn cầu" trong-đổi-chẳng hạn như sự thật rằng một loạt và có tối đa là yếu tố
1000-sẽ được
đoạn mức 13,3. lan tỏa khắp chương trình. Nếu chương trình sử dụng dữ liệu chỉ thông qua
rou- tines truy cập, chỉ những thói quen hàng ngày truy cập sẽ biết việc triển khai chi tiết.
Một cách khôn khéo dependencies hình tròn rào chắn với thông tin đang trốn là depen- dencies
hình tròn, như khi một thói quen thường nhật trong lớp một cuộc gọi một thói quen thường nhật
trong lớp B, và một thói quen thường nhật trong lớp B gọi một thói quen thường nhật trong lớp
A.
tránh những vòng lặp lệ thuộc. Họ làm cho nó khó để kiểm tra một hệ thống bởi vì bạn không
thể kiểm tra hoặc lớp một hay hạng B cho đến ít nhất một phần của cái khác là sẵn sàng.
Lớp dữ liệu nhầm lẫn với dữ liệu toàn cầu nếu bạn là một lập trình viên chu đáo, một trong
những rào cản trong thông tin đang che dấu hiệu quả có thể nghĩ đến những lớp dữ liệu như
dữ liệu toàn cầu và tránh nó bởi vì bạn muốn tránh những vấn đề liên quan tới dữ liệu toàn cầu.
Trong khi con đường đến địa ngục là lập trình bằng vàng ròng. với các biến số toàn cầu, tầng
lớp dữ liệu quà rủi ro ít hơn.
Dữ liệu toàn cầu, nói chung là đối tượng để hai vấn đề: lề thói hàng ngày vận hành trên dữ liệu
toàn cầu mà không biết rằng các thói quen hàng ngày đang hoạt động trên nó, và lề thói hàng
ngày để ý thấy rou- tines khác đang hoạt động trên dữ liệu toàn cầu nhưng họ không biết chính
xác là những gì họ làm thế với nó. Lưu thông số không diễn giải của những vấn đề này. Trực
tiếp với dữ liệu đã bị hạn chế ra một vài tổ chức thành thói quen hàng ngày một lớp. Cái lề thói
hàng ngày để ý thấy các thói quen hàng ngày hoạt động trên dữ liệu, và họ biết chính xác các
thói quen hàng ngày họ.

96 Chương 5: Thiết kế trong việc xây dựng


tất nhiên, cả vấn đề này giả định rằng hệ thống của bạn thì sử dụng à- thiết kế, các lớp học
nhỏ. Nếu chương trình của ông được thiết kế để sử dụng các lớp học lớn chứa hàng tá lề thói
hàng ngày mỗi, sự khác biệt giữa hai lớp dữ liệu và dữ liệu toàn cầu sẽ bắt đầu mờ và lớp dữ
liệu này sẽ phải chịu nhiều vấn đề tương tự như dữ liệu toàn cầu.
Cross-Reference cấp hiệu suất được nhận thức mã các biện pháp trừng phạt một rào chắn với
thông tin đang trốn cuối cùng có thể là một sự
cố gắng tối ưu hóa hiệu suất tránh các hình phạt hiệu suất ở cả 2 kiến trúc và mức mã hóa. này
sẽ được thảo luận chương 25, "Chiến lược Code-Tuning" Bạn sẽ không cần phải lo lắng ở mức
độ hoặc. Ở mức độ của kiến trúc, sự lo lắng là unnec-
và Chương 26, "Code-Tun- essary bởi vì một hệ thống thông tin cho architecting lẩn trốn không
xung đột với
các kỹ thuật ing." nó về hiệu năng architecting. Nếu bạn giữ thông tin đang trốn và hiệu suất
trong đầu, bạn có thể đạt được cả hai được các mục tiêu.
Thường gặp hơn lo lắng là ở mức độ mã hoá. Sự quan tâm này là truy cập dữ liệu mục incurs
gián tiếp các hình phạt cho mức độ thêm hiệu suất của vật thể các đối tượng, thói quen gọi, và
vân vân. Mối lo ngại này là trẻ sinh thiếu tháng. Cho đến khi bạn có thể cho tôi cocagiảm cân-
chắc hệ thống đang hoạt động và xác định bottlenecks, cách tốt nhất để chuẩn bị cho hiệu suất
làm việc cấp mã là tạo ra một quy mô đun thiết kế. Khi bạn phát hiện các điểm sau, bạn có thể
tối ưu hóa các lớp học và thói quen hàng ngày cá nhân mà không ảnh hưởng đến- ing phần
còn lại của hệ thống.
Giá trị của thông tin đang trốn
3 2 Thông tin đang trốn là một trong số ít các kỹ thuật thuyết đã được chứng minh indisputably
1 giá trị của nó trong thực tế, mà đã được đúng trong một thời gian dài (theo gây ấn tượng
Boehm a). Pro-
khó dữ liệu lớn gram rằng sử dụng thông tin ẩn náu này được phát hiện năm trước để dễ dàng
hơn để sửa đổi bằng một fac- tor của 4-hơn các chương trình điều không (Vaishnavi Korson và
năm 1986). Ngoài ra, thông tin đang trốn là một phần của nền tảng của cả hai thiết kế và vật thể
có cấu trúc thiết kế theo định hướng.
Thông tin đang trốn lại có những đặc quyền lực, dựa trên kinh nghiệm đó thì chuyện một khả
năng độc đáo để truyền cảm hứng cho những giải pháp thiết kế hiệu quả. Ạnh đối tượng truyền
thống thiết kế cung cấp thông tin về sức mạnh của mô hình toán dựa trên kinh nghiệm đó thì
chuyện thế giới trong các vật thể, nhưng nghĩ sẽ không đối tượng giúp bạn tránh được tuyên
bố label như là một thay vì 1 IdType per second. Ạnh vật thể nhà thiết kế sẽ hỏi, "nên nhận diện
được coi như một vật thể?" Tùy vào dự án mã hoá tiêu chuẩn, một "CÜ" trả lời có thể lập trình
viên có nghĩa rằng đã viết một destructor constructor, sao chép, người điều khiển, và người
điều hành nhiệm vụ; nó tất cả; và bình luận đặt nó dưới kiểm soát cấu hình. Hầu hết các lập
trình viên sẽ quyết định, "Không, nó không tạo ra một lớp học chỉ để nhận diện. Tôi sẽ chỉ sử
dụng ints."
ghi chú chuyện gì vừa mới xảy ra. Một sự thay thế, mà thiết kế hữu ích của đơn giản, giấu
chứng minh kiểu dữ liệu, thậm chí không được xem xét. Nếu, thay vào đó, nhà thiết kế đã hỏi,
"Còn những ID nên tiềm ẩn?" Anh ta có thể được quyết định giấu kiểu của nó đằng sau một
kiểu đơn giản tuyên ngôn rằng substitutes IdType cho thông tin quốc tế. Sự khác biệt giữa
hướng đối tượng thiết kế và thông tin trốn trong ví dụ này là nhiều tinh tế hơn một xung đột các
tính hiện theo quy tắc. Ạnh đối tượng thiết kế có thể chứng tỏ được quyết định của thiết kế như
thông tin đang trốn sẽ. Thay vì, sự khác biệt là một trong heuristics-

5,3 Khối nào: Heuristics thiết kế 97


nghĩ về thông tin đang trốn và khuyến khích sự truyền cảm hứng cho các quyết định được thiết
kế nghĩ- ing về vật thể không.
Thông tin ẩn náu này cũng có thể có ích trong việc thiết kế một lớp học là giao diện công cộng.
Khoảng cách giữa lý thuyết và luyện tập trong lớp thiết kế là rộng rãi và giữa nhiều lớp quyết
định về những gì các nhà thiết kế để đặt vào lớp là giao diện công cộng đồng nghĩa với việc
quyết định sẽ giao diện nhất thuận tiện để sử dụng, thường có kết quả định tiết lộ nhiều lớp
càng tốt. Từ những gì tôi thấy, một số các lập trình viên thà lật mặt tất cả một lớp học là dữ liệu
riêng tư hơn viết thêm 10 dòng mã lệnh để giữ bí mật của lớp còn nguyên vẹn.
Hỏi "Những lớp học này cần trốn?" cắt giảm đến tim của giao diện-vấn đề thiết kế. Nếu bạn có
thể đặt một chức năng hoặc dữ liệu vào lớp học đó là giao diện công mà không com- bí mật
của nó, làm đầy hứa hẹn. Nếu không, không.
Hỏi về gì cần hỗ trợ thiết kế tốt quyết định ẩn ở tất cả các cấp. Nó kích thích sự việc sử dụng
hằng số thay vì literals tên là ở mức độ xây dựng. Điều này giúp tạo thói quen tốt và tên bên
trong các lớp học tham số. Nét dẫn nó quyết định về lớp học và hệ thống con và liên kết ở
decompositions cấp hệ thống.
Có thói quen hỏi "Tôi phải che dấu?" Bạn sẽ ngạc nhiên vì nhiều dif- ficult vấn đề thiết kế giải
tán trước mắt mọi người.
Điểm mấu chốt
xác định các lĩnh vực có khả năng thay đổi
tiến xa hơn đọc một nghiên cứu của các nhà thiết kế tuyệt vời đã tìm ra một thuộc tính họ có
chung là abil của họ
tiếp cận được mô tả trong đây- ity để dự đoán thay đổi (Kính 1995). Ông đưa ra những thay đổi
là một trong những phần nào là thay đổi từ "Thiết kế phần mềm để giảm bớt thách thức các
khía cạnh của chương trình thiết kế tốt. Mục đích là để tách các khu vực không ổn định
của phần mở rộng và Contrac vậy- rằng ảnh hưởng của sự thay đổi sẽ bị hạn chế để một thói
quen thường nhật, học hay gói hàng. Đây là các
-đổi" (Parnas năm 1979). Bước nên theo trong chuẩn bị cho perturbations chẳng hạn.
1. Nhận diện mục mà có vẻ thay đổi. Nếu yêu cầu đó đã làm rất tốt, họ bao gồm một danh sách
những thay đổi và khả năng của mỗi thay đổi.
Trong trường hợp như vậy, trong việc xác định có khả năng thay đổi là dễ dàng. Nếu các yêu
cầu không trang trải cho các thay đổi, thấy cuộc thảo luận này theo sau của lĩnh vực có khả
năng thay đổi trên bất kỳ dự án.
2. Tách biệt những món hàng mà có khả năng thay đổi. Com- Compartmentalize mỗi bốc hơi
ponent đã nhận diện trong bước 1 vào riêng lớp hay vào một lớp với bộ phận có hơi khác có
khả năng thay đổi trong cùng một thời điểm.
3. Chọn ra những món hàng mà có vẻ thay đổi. Thiết kế giao diện interclass trở thành vô cảm
về tiềm năng thay đổi. Thiết kế các giao diện để thay đổi bị giới hạn vào bên trong lớp và bên
ngoài là chưa bị lây nhiễm. Bất kỳ lớp khác sử dụng thay đổi lớp cửa không ý thức rằng thay
đổi đã xảy ra.
Lớp học đó là giao diện sẽ bảo vệ bí mật của nó.

98 Chương 5: Thiết kế trong việc xây dựng


dưới đây là một số lĩnh vực có khả năng thay đổi:
Cross-Reference một trong những quy tắc kinh doanh kinh doanh có khuynh hướng là nguồn
gốc của những thay đổi phần mềm thường xuyên.
Các kỹ thuật mạnh mẽ nhất Quốc hội thay đổi cấu trúc thuế, một liên hiệp renegotiates hợp
đồng của nó, hoặc một bảo hiểm cho tiên đoán thay đổi là sử dụng các phương pháp định
hướng bàn. tỷ lệ thay đổi công ty bàn. Nếu bạn đi theo nguyên tắc thông tin lẩn trốn,
để tìm chi tiết, xem chương 18, logic dựa trên những quy tắc này sẽ không được vương vãi đầy
suốt chương trình của ông. Cái logic sẽ
"Phương pháp Table-Driven." trốn ở đây trong một góc tối của hệ thống cho đến khi nó cần
được thay đổi.
Phần cứng dependencies ví dụ về phần cứng dependencies bao gồm giao diện màn hình để,
máy in bàn phím chuột, chuột, ổ đĩa, âm thanh, và các thiết bị truyền thông cơ sở. Phần cứng
dependencies tách trong hệ thống con hay hạng của riêng họ. Đang tách chẳng hạn
dependencies giúp khi bạn di chuyển chương trình để một phần cứng mới ment environ-. Nó
cũng giúp ban đầu khi bạn đang phát triển một chương trình cho phần cứng không ổn định.
Bạn có thể viết các phần mềm mô phỏng sự tương tác với phần cứng cụ thể, có vũ khí-hệ
thống con giao diện sử dụng mô miễn là phần cứng, không ổn định hoặc không có, và rồi rút
phích cắm phần cứng-hệ thống con giao diện từ mô và hệ thống con chọc vào phần cứng khi
nó đã sẵn sàng để sử dụng.
Đầu vào và đầu ra tại một hơi thiết kế ở cấp độ cao hơn so với các giao diện phần cứng, thô
nhập/xuất là một khu vực không ổn định. Nếu các ứng dụng của bạn tạo ra tập tin dữ liệu riêng,
tập tin để- chiếc chiếu sẽ có thể thay đổi như các ứng dụng của bạn trở nên phức tạp hơn.
Người dùng nhập cấp các định dạng đầu ra và cũng sẽ thay đổi-những lĩnh vực định vị trên
trang giấy, số lượng những cánh đồng trên mỗi trang, chuỗi các cánh đồng, và vân vân. Nói
chung, đó là một ý tưởng hay để kiểm tra tất cả những thay đổi giao diện cho bên ngoài.
Tính năng ngôn ngữ Nonstandard hầu hết khách cũ chứa rất tiện dụng ngôn ngữ nonstandard
phần mở rộng. Sử dụng phần mở rộng là một đôi tay vợt thanh gươm bởi vì họ có thể không
được bán ra trong một môi trường khác nhau, cho dù đó là môi trường khác nhau đều khác
nhau, một nhà cung cấp khác nhau phần cứng việc thực hiện của ngôn ngữ, hay một phiên bản
mới của ngôn ngữ ra từ cùng một nhà cung cấp.
Nếu bạn sử dụng phần mở rộng với nonstandard ngôn ngữ lập trình, che giấu những exten-
sions trong một lớp học của riêng mình, vì thế bạn có thể thay thế chúng bằng những mã của
mình khi chuyển tới một môi trường khác nhau. Tương tự như vậy, nếu bạn dùng thư viện lề
thói hàng ngày mà không có sẵn trong tất cả các điều kiện môi trường, giấu thư viện thực sự lề
thói hàng ngày phía sau một giao diện mà hoạt động tốt trong môi trường khác.
Khó khăn thiết kế và xây dựng các khu vực đó là một ý tưởng hay để che giấu khó thiết kế và
xây dựng các khu vực bởi vì họ có thể làm cả bài kém và bạn có thể cần phải làm chúng lần
nữa. Compartmentalize chúng và giảm thiểu tác động xấu thiết kế của họ hoặc construc--đổi có
thể có phần còn lại của hệ thống.
Các biến số trạng thái các biến số trạng thái cho thấy tình trạng của một chương trình và có
khuynh hướng bị thay đổi thường xuyên hơn nhiều so với hầu hết các dữ liệu. Trong một viễn
cảnh điển hình, bạn có thể xác định origi- nally lỗi-biến như một trạng thái bun biến đổi và quyết
định sau đó nó

5,3 Thiết Kế Khối nào: Heuristics 99


sẽ tốt hơn thực hiện như là một kiểu được đánh sốstyle name với giá trị ErrorType_ErrorType
ai, cảnh báo, và ErrorType__gây chết người.
Bạn có thể thêm ít nhất hai mức linh hoạt và khả năng đọc để sử dụng của tình trạng vari-
ables:
■ không sử dụng biến lôgíc như một biến số. Dùng một kiểu được đánh sốstyle name thay vào
đó. Đó là một thứ để thêm vào tiểu bang phải một biến số trạng thái, và thêm vào một loại mới
với một kiểu đòi hỏi một người không được đánh sốstyle name recompilation hơn là một phiên
bản chính của mỗi dòng mã kiểm tra các tham số.
■ sử dụng thói quen hàng ngày chứ không phải kiểm tra truy cập các tham số trực tiếp. Bằng
cách kiểm tra các thói quen truy cập hơn là, bạn cho phép các tham số cho khả năng phát hiện
tiểu bang phức tạp hơn. Ví dụ, nếu bạn muốn kiểm tra sự pha trộn lỗi-biến và hiện tại tiểu bang-
tiểu bang-biến chức năng, rất dễ để làm nếu bài thi được giấu trong 1 thói quen và khó làm nếu
nó là một xét nghiệm phức tạp được mã hóa trong suốt những chương trình.
Dữ liệu có kích cỡ như những ràng buộc khi bạn tuyên bố một loạt các kích cỡ 100, bạn đang
đimua ít bia mà.- mation vạch trần cho thế giới rằng thế giới này không cần nhìn thấy. Bảo vệ
quyền riêng tư!
Thông tin đang trốn là không phải lúc nào tôi cũng phức tạp như một lớp học. Đôi khi nó như
sim- ple như sử dụng một hằng số tên như MAX_công nhân viên giấu một 100.
Liệu trước nhiều mức độ của sự thay đổi
Cross-Reference giây- này khi nghĩ về khả năng thay đổi sang hệ thống, thiết kế hệ thống như
vậy những
phương thức tiếp cận để anticipat-đổi hiệu ứng- hoặc quy mô của sự thay đổi là tỉ lệ với những
nguy cơ là thay đổi sẽ xảy ra. ing thay đổi không có sự liên quan thiết kế trước mặt hay nếu một
thay đổi mã hóa có thể, bạn hãy chắc chắn rằng hệ thống có thể đáp ứng điều đó dễ dàng. Chỉ
về phía trước. Cho một cuộc thảo luận về các vô cùng khó thay đổi nên được phép có hậu quả
đáng kể về mặt cho nhiều người hơn
những thầy, xem "dân chuyên nghiệp- hơn một lớp trong một hệ thống. Các nhà thiết kế tốt
cũng yếu tố trong chi phí của tiên đoán gram chứa mã mà có vẻ như nó có thể là cần thay đổi.
Nếu một thay đổi không phải có khả năng nhưng dễ dàng khủng khiếp kế hoạch cho, anh nên
nghĩ khó khăn hơn
một ngày nào đó" trong Đoạn 24.2. về tiên đoán nó hơn nếu nó không có khả năng và rất khó
để lên kế hoạch.
Xa hơn Reading This công kích- một kỹ thuật tốt để nhận diện các lĩnh vực có khả năng thay
đổi là đầu tiên để nhận diện
cussion tối thiểu vẽ trên bộ phận của chương trình đó có thể được sử dụng cho người dùng.
Các bộ phận tạo nên tiếp cận được mô tả trong "cốt lõi, về thiết kế và phát triển của hệ thống
và khó có thể thay đổi. Tiếp theo, định nghĩa sự gia tăng tối thiểu để hiệu hệ thống-
chương trình của gia đình" (Parnas tem. Họ có thể được quá nhỏ nên chúng có vẻ quá tầm
thường. Khi bạn xem xét những thay đổi chức năng,
năm 1976). chắc chắn cũng để xem xét những thay đổi định tính: làm chương trình sợi chỉ-safe
localizable, làm cho nó, và vân vân. Các khu vực này của sự cải tiến tiềm năng cấu thành có
thể có các thay đổi cho hệ thống; thiết kế những lĩnh vực này sử dụng những nguyên tắc của
thông tin đang lẩn trốn.
Bằng cách nhận dạng cốt lõi đầu tiên, bạn có thể thấy thành phần mà thực sự thêm-ons và sau
đó ngoại suy và lẩn trốn cải tiến từ đó.

100 Chương 5: Thiết kế trong việc xây dựng


sự kết nối tiếp tục nới lỏng
kiểm soát chặt chẽ mô tả cách một thói quen lớp hay là liên quan đến các lớp học khác hoặc
tines rou-. Mục đích là để tạo ra các lớp học, và lề thói hàng ngày với nhỏ, có thể thấy rõ, trực
tiếp và mối quan hệ với các lớp linh hoạt và lề thói hàng ngày, mà được gọi là "loose đôi vậy."--
hết chúng taphải thu xếp xong của đôi vậy được áp dụng tương đương với thói quen hàng
ngày, vì vậy các lớp học và cho phần còn lại của discus- sion này tôi sẽ sử dụng từ "Mô- đun
này" để đề cập đến cả các lớp học, và lề thói hàng ngày.
Mô- đun chẽ giữa tốt là loose đủ rằng một môđun điều khiển này có thể dễ dàng được sử dụng
bởi các môđun. Mô hình nhanh không được kết nối bằng cách đối với các xe hơi khúc rằng gài
đây khi đẩy cùng nhau. Kết nối 2 cái xe là dễ dàng-bạn chỉ bấm các xe với nhau.
Tưởng tượng bao nhiêu nó sẽ khó hơn nếu bạn có được phá hỏng mọi thứ lại với nhau, hoặc
kết nối một nhóm các sợi dây, hoặc nếu bạn có thể kết nối chỉ đến một số loại xe hơi khi một số
những loại xe hơi. Những đôi vậy mô hình của xe hơi nhanh không hoạt động vì nó đơn giản
hết mức có thể. Trong phần mềm, liên kết giữa các mô đun đơn giản hết mức có thể.
Cố gắng tạo ra các mô đun phụ thuộc vào mô- đun khác nhỏ. Làm cho họ rời rạc, như là đối tác
làm ăn, thay vì gắn, như là anh em sinh đôi dính nhau. Một thói quen thường nhật như tội lỗi ()
là tạm cộng bởi vì tất cả mọi thứ cần biết là nó được thông qua nó với giá trị một đại diện cho
một góc theo độ. Một thói quen hằng ngày chẳng hạn như InitVars biến quét 1, ( Biến quét2,
biến quét3, ..., varN ) là kết hợp chặt chẽ hơn bởi vì, với tất cả những yếu tố biến đổi nó phải đi,
gọi mô- đun này gần như biết chuyện gì đang xảy ra bên trong InitVars (). Hai lớp đó phụ thuộc
vào nhau là sử dụng cùng dữ liệu toàn cầu là thậm chí kết hợp chặt chẽ hơn.
Tiêu chuẩn đôi vậy
ở đây còn một số tiêu chuẩn để sử dụng trong đánh giá mô- đun chẽ giữa:
Kích cỡ kích cỡ đề cập đến số kết nối giữa môđun. Với đôi vậy, là rất đẹp vì nhỏ nó ít công sức
để kết nối các môđun một môđun khác mà có một giao diện nhỏ hơn. Một quen dần mất 1 là
nhiều tham số lỏng được kết nối với các mô đun gọi nó hơn một thói quen thường nhật mà dẫn
tham số 6. Một lớp với 4 bản- được định nghĩa là nhiều phương pháp công cộng lỏng được kết
nối với các mô đun sử dụng nó hơn một lớp mà exposes 37 phương pháp công cộng.
Tầm nhìn tầm nhìn đề cập đến khiến cho tên tuổi của những liên kết giữa hai quốc phòng
MOD- ules. Lập trình là không như đang ở trong CIA, bạn không có thẻ tín dụng vì đã có vẻ lén
lút.
Nó giống như là quảng cáo, các bạn được nhiều tín dụng để tạo ra các mối liên kết giữa bạn
như rõ ràng càng tốt. Truyền dữ liệu một danh sách tham số này đang tạo sự kết nối là rõ ràng
và do đó tốt. Đang sửa đổi dữ liệu toàn cầu để mô- đun khác có thể sử dụng dữ liệu này một
cách vụng trộm kết nối và do đó tồi tệ. Để ghi lại những kết nối các dữ liệu toàn cầu làm cho nó
trở nên rõ ràng hơn và là tương đối tốt.
Sự linh hoạt tính linh hoạt đề cập đến việc thật là dễ dàng làm sao bạn có thể thay đổi các mối
liên kết giữa môđun. Chính xác nhất là, bạn muốn giống như thế USB nối trên máy tính của bạn
hơn như dây trần và một khẩu súng nàn là hàn. Khả năng linh động này một phần là một sản
phẩm của các

thiết kế Khối 5,3: Heuristics 101


đôi vậy đặc điểm, nhưng nó hơi khác nhau. Giả dụ bạn có một thói quen thường nhật nhìn lên
lượng đi nghỉ một nhân viên nhận mỗi năm, cho thuê mướn một ngày và công ăn việc làm phân
loại. Thói quen của LookupVacationBenefit tên (). Giả sử trong một mô- đun này, bạn có một
công nhân vật chứa các thuê ng¡y và công việc classifica--đổi, giữa những thứ khác, và mô-
đun đó thông qua đối tượng với LookupVacationBenefit ().
Từ góc nhìn của tiêu chuẩn khác, hai mô- đun sẽ trông lỏng cou- nhận. Người lao động mối liên
hệ giữa hai mô- đun hiển, và chỉ có một mối quan hệ. Bây giờ giả định rằng bạn cần phải sử
dụng những LookupVacationBenefit () ng Xác nháº-n- mô- đun ule từ một phần ba điều đó
không có một công nhân vật thể nhưng điều đó không có nghĩa là có một hir- ing ng¡y và công
ăn việc làm phân loại. Đột nhiên LookupVacationBenefit () trông ít sự hưng phấn thân thiện kết
hợp với mô- đun mới.
Mô- đun, lần thứ 3 để sử dụng LookupVacationBenefit (), nó phải biết về nhân viên lớp. Nó có
thể lên một công nhân vật thể giả với chỉ hai cánh đồng, nhưng điều đó sẽ đòi hỏi các kiến thức
nội bộ của LookupVacationBenefit (), cụ thể là đó là những cánh đồng chỉ nó sử dụng. Giải
pháp này có thể một kludge, và một xấu xí. Thứ hai là sẽ sửa đổi LookupVacationBenefit () vì
vậy mà nó có thể cần phải thuê ng¡y và phân loại công việc thay vì nhân viên. Trong cả hai
trường hợp thì mô- đun gốc hóa ra có rất nhiều nơi kém linh hoạt hơn nó có vẻ như lúc đầu.
Sự kết thúc có hậu cho những câu chuyện này là một môđun điều khiển này có thể làm cho bạn
bè thân thiện nếu đó là sẵn sàng trở nên linh động-trong trường hợp này, bằng cách thay đổi
để thuê công việc và ngày tháng classifica--đổi thay vì nhân viên đặc biệt.
1 cách ngắn gọn, dễ dàng hơn mô- đun khác có thể gọi một môđun càng lỏng cộng nó là, và
điều đó là tốt vì nó linh hoạt hơn và maintainable. Sáng tạo ra một cấu trúc hệ thống, chia tay
chương trình các dòng mối liên kết tối thiểu. Nếu một chương trình được một mảnh gỗ, anh sẽ
cố chia nó ra theo bản chất.
Loại đôi vậy
đây thường thấy nhất là loại đôi vậy bạn sẽ gặp phải.
Đơn giản trong tham số dữ liệu chẽ 2 mô- đun đơn giản trong tham số dữ liệu được kết nối nếu
tất cả dữ liệu thông qua vào giữa chúng là dữ liệu nguyên sơ loại và tất cả dữ liệu qua danh
sách tham số. Loại đôi vậy là bình thường và được chấp nhận.
Đơn giản trong sự kết nối một môđun là vật thể đơn giản trong vật thể được kết nối với một vật
thể nếu nó instanti- ates đối tượng đó. Loại đôi vậy là ổn thôi.
Tham số-đôi vậy 2 vật thể mô- đun vật thể tham số-được kết nối với nhau đối tượng1 đòi hỏi
vật thể nếu2 để thông qua nó một vật thể3. Loại đôi vậy là đối tượng hơn1 chặt chẽ hơn đòi hỏi
các vật thể2 để thông qua nó chỉ loại dữ liệu thô sơ bởi vì nó đòi hỏi vật thể để tìm hiểu về
những vật thể23.

102 Chương 5: Thiết kế trong việc xây dựng


sự kết nối về ngữ nghĩa những loại quyệt đôi vậy xảy ra khi một mô- đun này thì sử dụng không
của một số yếu tố của mô- đun syntactic khác nhưng của một số kiến thức về môđun khác về
ngữ nghĩa là hoạt động bên trong. Dưới đây là một số ví dụ:
Mô- đun1 lần đi qua một ■ điều khiển Môđun lá cờ để mô- đun điều đó nói với22 phải làm gì.
Cách tiếp cận này đòi hỏi phải đưa ra các giả định1 đến Mô- đun về hoạt động nội bộ của mô-
đun này, cụ thể là Mô- đun gì22 đó sẽ làm gì với những lá cờ kiểm soát. Mô- đun nếu làm nên
một đặc trưng2 kiểu dữ liệu cho cờ kiểm soát (kiểu được đánh sốstyle name hoặc vật thể), việc
sử dụng này có lẽ OK.
Mô- đun ■2 sử dụng dữ liệu toàn cầu sau khi dữ liệu toàn cầu đã được sửa đổi bằng môđun1.
Cách tiếp cận này mô- đun đòi hỏi2 để thừa nhận rằng1 đã sửa đổi môđun dữ liệu Mô- đun
theo những cách mà2 cần phải thay đổi, và mô- đun đó1 đã được gọi là vào đúng thời điểm.
Mô- đun1giao diện của ■ kỳ Mô- đun của luật1.khởi động () công việc thường nhật của bạn nên
gọi trước khi Mô- đun của nó1.thói quen thường nhật () được gọi là. Mô- đun này2 biết rằng
mô- đun này1.Thói quen () gọi1.Khởi tạo mô- đun () dù sao đi nữa, nó chỉ Mô- đun instantiates1
và mô- đun gọi1.() mà không có thói quen Mô- đun gọi1.khởi động () đầu tiên.
Mô- đun1 lần đi qua vật thể ■ môđun để2. Mô- đun vì mô- đun biết rằng21 sử dụng chỉ có 3 đối
tượng của phương pháp, nó initializes 7 vật thể chỉ bán phần với dữ liệu 3 phương pháp cụ thể
cần.
Mô- đun1 truyền BaseObject ■ môđun để2. Mô- đun vì mô- đun biết rằng12 là thực sự gửi nó
qua DerivedObject, nó để DerivedObject BaseObject kiêm và gọi phương pháp cụ thể với
DerivedObject.
Sự kết nối về ngữ nghĩa là nguy hiểm bởi vì thay đổi trong sử dụng mã'- Ä'un mã có thể bẻ gãy
trong mô- đun sử dụng theo cách hoàn toàn nút hủy bởi bá"™ biãªn dá"‹ch.
Mã như thế này khi nghỉ giải lao, nó nghỉ vào đề một cách điều dường như không liên quan đến
các thay đổi được tạo ra từ dùng mô- đun này, mà thay đổi thành một nhiệm vụ Sisyphean gỡ
lỗi.
Điểm mấu chốt là sự kết nối lỏng mô- đun hiệu quả cung cấp thêm mức độ trừu tượng-một khi
anh viết nó, bạn có thể được cho rằng điều đó là hiển nhiên. Nó làm giảm chương trình tổng
thể sự phức tạp và cho phép bạn tập trung vào một điều gì đó trong cùng một lúc. Nếu sử dụng
một môđun đòi hỏi bạn phải tập trung vào nhiều hơn một nguyên nhân ngay lập tức-kiến thức
về hoạt động bên trong nó, để sửa đổi dữ liệu toàn cầu, chưa rõ cách của một sức mạnh
abstractive chức năng là mất và khả năng của mã'- Ä'un giúp quản lý sự phức tạp được giảm
bớt hoặc loại bỏ.
Các lớp học, và lề thói hàng ngày là đầu tiên và trước nhất trí thức công cụ cho việc giảm sự
phức tạp.
Nếu họ không làm việc của cô đơn giản hơn, họ không làm công việc của họ.
Điểm mấu chốt

5,3 Thiết Kế Khối nào: Heuristics 103


tìm các mẫu thiết kế
cc2e.com/0585 chung các mẫu thiết kế cung cấp lõi của có sẵn và được giải pháp mà có thể
được sử dụng để giải quyết nhiều vấn đề phổ biến nhất của phần mềm. Một số vấn đề cần giải
pháp mà phần mềm này được lấy từ các nguyên tắc đầu tiên. Nhưng hầu hết các vấn đề tương
tự như các vấn đề về quá khứ, và mấy thứ này có thể được giải quyết bằng cách sử dụng các
giải pháp tương tự, hay mẫu hình. Mô hình chung bao gồm Mo Mớiname, cầu, người trang trí,
cảnh, phương pháp, Observor nhà máy, Singleton, nhà chiến lược, và phương pháp mẫu.
Cuốn sách các mẫu thiết kế bởi Erich Gamma, Richard Helm, Ralph Johnson, và John
Vlissides (1995) là quyết định của mô tả về các mẫu thiết kế.
Mẫu hình cung cấp vài lợi ích đầy đủ điều đó thiết kế không tự chọn:
giảm sự phức tạp bằng việc cung cấp các mẫu có sẵn và được các khái niệm trừu tượng nếu
bạn nói, "mã này sử dụng một phương pháp nhà máy để tạo ra những trường hợp của các lớp
học," bắt nguồn từ chương trình khác- mers trên dự án của mình sẽ hiểu rằng mã của anh bao
gồm một loạt inter khá giàu có mối quan hệ và giao thức lập trình-, tất cả đều đang chạy khi đề
cập đến mẫu thiết kế của phương pháp nhà máy.
Nhà máy phương pháp này là một mẫu hình cho phép bạn instantiate bất kỳ lớp chiết xuất từ
một căn cứ cụ thể lớp mà không cần theo dõi những cá nhân có chiết xuất các lớp học ở bất cứ
đâu nhưng phương pháp nhà máy. Cho một cuộc thảo luận về các phương pháp Nhà máy pat-
tern, thấy "thay thế Constructor với phương pháp Nhà máy" trong Refactoring (Fowler năm
1999).
Bạn không cần phải giải thích rõ mỗi dòng mã để lập trình viên khác để hiểu được những thiết
kế tiếp cận được tìm thấy trong mã của anh.
Mẫu hình lỗi bởi institutionalizing giảm chi tiết về các giải pháp chung vấn đề thiết kế phần mềm
chứa sắc thái xuất hiện khi hoàn toàn chỉ sau khi vấn đề này đã được giải quyết một hay hai lần
(hoặc 3 lần, hoặc 4 lần, hoặc là...). Bởi vì các khuôn mẫu đại diện cho những bài cách giải
quyết các vấn đề thường thấy, họ là hiện thân của sự thông thái accumu- lated từ năm cố gắng
để giải quyết những vấn đề này, và họ cũng là hiện thân của sự Latin cor- rections để nỗ lực giả
mà con người có thể làm trong việc giải quyết các vấn đề đó.
Sử dụng một mẫu thiết kế là do đó về khái niệm tương tự như sử dụng mã thư viện thay vì viết
của mình. Chắc chắn, mọi người đã viết một Quicksort tự chọn một vài lần, nhưng thật là kỳ
quặc rằng phiên bản tự chọn của bạn sẽ hoàn toàn đúng ngay ở lần thử đầu tiên? Simi- larly,
numerius vấn đề thiết kế tương tự nhau đủ để quá khứ vấn đề mà các bạn đang đặt cược-
Sáng ra bằng cách sử dụng một thiết kế giải pháp hơn tạo chạy kphotoalbum có sẵn một giải
pháp mới.
Mẫu hình cung cấp giá trị dựa trên kinh nghiệm đó thì chuyện bằng việc đề nghị thiết kế giải
pháp thay thế một thiết kế cùng quen thuộc với các mô hình chung có thể dễ dàng lướt qua một
danh sách các mẫu và hỏi "nào trong số các mẫu hình này thích hợp với vấn đề thiết kế của
tôi?" đi xe đạp qua một hệ thống các giải pháp thay thế là immeasurably quen thuộc dễ hơn là
tạo ra một giải pháp thiết kế tự chọn ra khỏi toàn bộ vải. Và mã số của từ một mô hình quen
thuộc cũng sẽ dễ dàng hơn cho độc giả của mã để hiểu hơn mã tự chọn sẽ hoàn toàn.

104 Chương 5: Việc xây dựng


các thực tiễn các mẫu thiết kế trong giao tiếp bằng cách di chuyển những hộp thoại thiết kế
phát triển ở mức cao hơn ngoài sự phức tạp-lợi ích, các mẫu thiết kế quản lý có thể tăng tốc
thiết kế các cuộc thảo luận bằng cách cho phép các nhà thiết kế để suy nghĩ và thảo luận ở một
mức độ lớn hơn của gran- ularity. Nếu anh nói: "Tôi không thể quyết định xem liệu tôi có nên sử
dụng tạo nên hay một nhà máy phương pháp trong tình huống này," bạn đã giao tiếp rất lớn đối
với một số từ-miễn là bạn và thính giả của bạn đều quen thuộc với những mẫu hình. Tưởng
tượng bao nhiêu lâu hơn, bạn sẽ mất để đi sâu vào các chi tiết của một nhà chế tạo mẫu mã và
mã số cho một nhà máy mẫu và phương pháp so sánh và ngược lại hai phương pháp tiếp cận.
Nếu bạn không quen thuộc với các mẫu thiết kế đã bàn, để tiếp xúc một số 5-1 thường gặp
nhất các kiểu mẫu để kích thích sự hứng thú.
Bàn thiết kế các mẫu hình
mẫu phổ biến 5-1 mô tả
hỗ trợ tạo ra các nhà máy trừu tượng liên quan, vật thể bằng cách xác định đã sắp đặt nhưng
không phải là loại vật cụ thể mỗi.
Mo mớiname chuyển giao diện của một lớp học để một giao diện khác nhau.
Cây cầu đã xây dựng một giao diện và thực hiện bằng cách nào đó hoặc có thể thay đổi khác
được thay đổi.
Shanghai Composite bao gồm một vật thể mà chứa thêm vật chất của kiểu riêng để mã khách
có thể tương tác với cấp trên. Vật thể và quan tâm đến điều chính nó với tất cả các đối tượng
chi tiết.
Trang trí thế trách nhiệm gắn với một vật thể một cách năng động, mà không tạo ra subclasses
cụ thể cho mỗi cấu hình của trách nhiệm.
Cảnh cung cấp một giao diện kiên định mã hóa đó sẽ không nếu không cung cấp một giao diện
kiên định.
Phương pháp nhà máy Instantiates các lớp học cụ thể chiết xuất từ một căn cứ lớp mà không
cần theo dõi những cá nhân có chiết xuất các lớp học ở bất cứ đâu nhưng phương pháp nhà
máy.
Máy phục vụ một vật thể mà Iterator cung cấp truy cập vào mỗi nguyên tố trong một set
sequentially.
Hoa tiêu giữ nhiều trong vật Good synch-up với nhau bằng cách tạo ra một vật thể chịu trách
nhiệm cho thấy một bộ đồ vật liên quan về những thay đổi đối với bất cứ người nào trong nhà.
Singleton cung cấp truy cập vào một lớp học toàn cầu mà có một và chỉ một tiến.
Định nghĩa một tập hợp các chiến lược các thuật toán hay hành vi mà là 1 cách mãnh liệt hoàn
toàn các ổ đĩa cứng với nhau.
Phương pháp định nghĩa các mẫu cấu trúc của một thuật toán nhưng để lại việc thực hiện để
subclasses chi tiết.
Nếu bạn chưa xem các mẫu thiết kế, phản ứng của bạn trước khi đến xem mô tả trong bàn 5- 1
có thể là "Chắc chắn, tôi đã biết hầu hết những ý tưởng này." phản ứng đó là một phần lớn
trong các mẫu thiết kế tại sao nó có giá trị. Mô hình đó đang rất quen thuộc với hầu hết chương
trình- mers giàu kinh nghiệm, và cho tên nhận diện được với họ hỗ trợ hiệu năng và hiệu quả
hơn. com- munication về chúng.

5,3 Thiết Kế Khối nào: Heuristics 105


Một cái bẫy tiềm năng với mô hình này ép mã phù hợp để sử dụng một mô hình. Trong một số
trường hợp, Shift- mã ing hơi để phù hợp với một mẫu sẽ cải thiện understandability công nhận
của mã. Nhưng nếu phải được thay đổi mã quá xa, đẩy chúng trông giống như một tiêu chuẩn
pat- tern đôi khi cũng có thể làm tăng sự phức tạp.
Một cái bẫy tiềm năng với mô hình này mảng: sử dụng một mẫu lỗi tại em vì một ước muốn thử
một mẫu chớ không phải là vì những kiểu mẫu đó là một giải pháp thiết kế phù hợp.
Nhìn chung, các mẫu thiết kế là một công cụ rất mạnh mẽ cho việc quản lý sự phức tạp. Bạn có
thể đọc bản mô tả chi tiết hơn trong bất kỳ người tốt những cuốn sách bị liệt vào cuối chương
này.
Heuristics khác
trước các phần mô tả được thiết kế phần mềm heuristics lớn. Dưới đây là một vài heuristics
khác rằng như vậy có thể hữu ích khá thường xuyên nhưng vẫn còn đáng được nhắc tới.
- Nhắm gắn bó về mạnh mẽ
gắn bó về xuất hiện từ thiết kế có cấu trúc và thường được bàn luận trong cùng một bối cảnh
như đôi vậy. Gắn bó về đề cập đến tất cả các thói quen hàng ngày chặt chẽ như thế nào trong
một lớp hay tất cả các mật mã một thói quen thường nhật hỗ trợ một mục đích trung ương-cách
tập trung các lớp học. Các lớp học chứa liên quan có thể diễn tả chức năng mạnh mẽ như có
gắn bó về mạnh mẽ, và heuris-'Tic mục tiêu là làm sao để gắn bó về mạnh càng tốt. Gắn bó về
là một công cụ hữu ích cho manag- ing sự phức tạp bởi vì càng nhiều cái mã trong một lớp học
hỗ trợ một mục đích trung ương, dễ dàng hơn não bộ của bạn có thể nhớ mọi thứ mã này.
Nghĩ về thói quen ở mức độ gắn bó về đã được một hữu ích trong nhiều thập niên và dựa trên
kinh nghiệm đó thì chuyện này vẫn còn có ích hôm nay. Ở mức độ lớp, dựa trên kinh nghiệm
đó thì chuyện của đã gắn bó về phần lớn bị subsumed bởi rộng lớn dựa trên kinh nghiệm đó thì
chuyện về định nghĩa các khái niệm trừu tượng, mà đã được thảo luận trước đó trong chương
này và trong chương 6. Các khái niệm trừu tượng có ích ở mức độ thói quen của anh, quá,
nhưng hơn thế cân bằng với gắn bó về ở cấp độ đó chi tiết.
Xây dựng các thứ bậc
thứ bậc thứ bậc kiểu này là một cấu trúc trong đó các thông tin hầu hết nói chung hay đại diện-
resentation trừu tượng các khái niệm nằm ở phía trên của hệ thống phân cấp, với ngày càng
chuyên dụng, chi tiết trí tại phân cấp là cấp dưới. Trong phần mềm, các thứ bậc được tìm thấy
trong lớp học, và, như các thứ bậc tầng 4 5-2 trong hình được minh họa, trong thói quen-gọi
các thứ bậc.
Các thứ bậc đã là một công cụ quan trọng đối với việc quản lý các bộ thông tin phức tạp trong ít
nhất là năm 2000 năm. Aristotle dùng thứ bậc để tổ chức thế giới động vật.
Con người thường sử dụng các đường nét thông tin phức tạp để tổ chức (như cuốn sách này).
Các nhà nghiên cứu thấy rằng những người thường tìm các thứ bậc để trở thành một cách tự
nhiên để tổ chức thông tin phức tạp. Khi họ vẽ một vật thể phức tạp như một ngôi nhà, họ vẽ nó
hierarchically. Đầu tiên họ vẽ các đường nét của nhà, sau đó các cửa sổ

chương 5: Thiết Kế 106 trong công trình xây dựng


và cánh cửa, và sau đó thêm chi tiết. Họ không vẽ nhà từng viên gạch, đá cuội này bằng cách,
hoặc móng tay cũng thừa nhận bởi cái đinh (Simon năm 1996).
Các thứ bậc là một công cụ hữu ích để đạt tới chính của phần mềm bắt buộc bởi vì họ kỹ thuật
cho phép bạn tập trung vào chỉ những độ chi tiết bạn đang quan tâm. Các chi tiết không mất đi
hoàn toàn; chúng ta chỉ đơn giản là bị ép buộc mức độ khác nhau, vì thế bạn có thể nghĩ về
chúng khi bạn muốn thay vì nghĩ về tất cả những chi tiết tất cả thời gian.
Lớp
Cross-Reference Formalize hợp đồng cho nhiều hơn ở một mức độ chi tiết hơn, suy nghĩ của
mỗi lớp là giao diện như một hợp đồng với phần còn lại của
mấy cái hợp đồng, thấy "Dùng asser- chương trình có thể thu được những hiểu biết tốt.
Thường thường, hợp đồng là thứ gì đó giống như "Nếu bạn tions để làm phim tài liệu và kiểm
tra tiền đề và postcon- hứa sẽ cung cấp dữ liệu x, y và z và anh, hứa hẹn chúng sẽ có đặc điểm
a, b,
ditions" trong đoạn 8. 2. và c, tôi hứa với các hoạt động để thực hiện 1, 2 và 3 trong những ràng
buộc 8, 9, và 10." lời hứa hẹn các khách hàng của lớp học làm cùng lớp thường được gọi là
"tiền đề," và lời hứa hẹn vật thể cho khách hàng của nó được gọi là "postconditions."
Những hợp đồng có ích cho việc quản lý sự phức tạp bởi vì, ít nhất là trong lý thuyết, vật thể có
thể bỏ qua bất kỳ hành vi noncontractual an toàn. Trong thực tế, vấn đề này là khó khăn hơn
nhiều.
Gán trách nhiệm
khác dựa trên kinh nghiệm đó thì chuyện là suy nghĩ cách thông nên được gán trách nhiệm vào
những vật thể. Hỏi mỗi vật nên chịu trách nhiệm về tương tự hỏi thông tin mà nó nên che giấu,
nhưng tôi nghĩ nó có thể tạo ra câu trả lời rộng lớn hơn, dựa trên kinh nghiệm đó thì chuyện giá
trị độc đáo.
Thiết kế cho thử nghiệm
một quá trình suy nghĩ rằng có thể thu được những hiểu biết sâu sắc là thiết kế thú vị hỏi cái hệ
thống sẽ trông như thế nào nếu bạn thiết kế nó để tạo điều kiện thuận lợi cho thử nghiệm. Anh
cần phân biệt giao diện người dùng từ phần còn lại của đoạn mã để bạn có thể tập thể dục nó
một cách độc lập? Anh có cần orga- nize mỗi hệ thống con để nó giảm thiểu dependencies trên
hệ thống con khác? Thiết kế cho thử nghiệm có xu hướng đem lại thêm lớp khẳng định điều, đó
là giao diện thường có lợi cho sức khỏe.
Tránh
giáo sư kỹ thuật dân sự thất bại Henry Petroski viết một cuốn sách thú vị, mô hình thiết kế:
Lịch sử những lỗi sai và trường hợp phán xét trong kỹ thuật (Petroski năm 1994), rằng biên
niên sử về lịch sử của thất bại trong thiết kế cây cầu. Petroski biện luận rằng nhiều cây cầu
ngoạn mục thất bại này diễn ra bởi phải tập trung vào những thành công và không đủ được
trước đây xem xét- có thể thất bại ing chế độ. Ông ta kết luận rằng thất bại như định đến
Tacoma thu hẹp lại tầm nhìn cây cầu có thể đã tránh được nếu các nhà thiết kế đã được coi
như là cách cẩn thận cây cầu có thể thất bại và không chỉ là sao chép các thuộc tính của các
thiết kế thành công.

5,3 Thiết Kế Khối nào: Heuristics 107


cao-an ninh đãng trí của nhiều hồ sơ nổi tiếng trong vài năm qua hệ thống làm cho nó khó để
không đồng ý rằng chúng ta nên tìm cách để áp dụng Petroski là thất bại quan sát này để thiết
kế phần mềm.
Đóng sách chọn thời gian một cách có ý thức
Cross-Reference cho nhiều thời gian ràng buộc căn thời gian một giá trị cụ thể chắc chắn sẽ
biến. Nó kết nối
đóng sách trên mã thời gian, thấy đoạn sớm có xu hướng trở nên đơn giản hơn, nhưng nó
cũng có xu hướng trở nên kém linh hoạt. Đôi khi bạn có thể có 1, "sự ràng buộc thời gian 10,6."
cái nhìn sâu sắc thiết kế tốt từ hỏi những câu hỏi như thế này: nếu bọc những giá trị này trước
đó? Sẽ ra sao nếu bọc những giá trị này sau đó? Chuyện gì sẽ xảy ra nếu tôi khởi động bàn ở
đây trong đoạn mã? Điều gì sẽ xảy ra nếu tôi đọc các giá trị của biến này từ người dùng vào lúc
chạy thời gian?
Điểm Trung tâm Kiểm soát làm
P. J. Plauger nói hắn mối quan tâm chính là "Về nguyên tắc cơ bản của một nơi tốt là - có nên
là 1 đúng chỗ để tìm xem có bất kỳ nontrivial mã lệnh, và một đúng chỗ để tạo ra một khả năng
thay đổi" (Plauger bảo trì 1993). Điều khiển có thể được tập trung ở các lớp học, thói quen
hàng ngày, preprocessor macros, Tập tin gồm #-ngay cả một hằng số tên là một ví dụ về một
điểm trung tâm kiểm soát.
Giảm độ phức tạp-lợi ích đó càng ít nơi bạn phải tìm một số- điều, những an toàn hơn và nó sẽ
dễ dàng hơn để thay đổi.
Nên sử dụng bạo lực
khi còn nghi ngờ gì nữa, sử dụng bạo một công cụ dựa trên kinh nghiệm đó thì chuyện mạnh là
bạo lực. Đừng đánh giá thấp nó. 1 si-solu lực-
lực.-đổi có hiệu quả tốt hơn so với một giải pháp thanh lịch làm vậy không được. Có thể phải
mất một thời gian dài - Người giúp việc Lampson thời gian để có được một giải pháp thanh lịch
làm việc. Trong mô tả lịch sử tìm kiếm algo- rithms, ví dụ, Donald Knuth chỉ ra rằng mặc dù đầu
tiên miêu tả một thuật toán tìm kiếm nhị phân đã được xuất bản trong năm 1946, mất 16 năm
cho một số-- một công bố một thuật toán một cách chính xác đã tìm kiếm danh sách tất cả các
kích thước (Knuth 1998). Một hệ nhị phân tìm kiếm là lịch sự, nhưng tàn bạo lực, tìm kiếm nối
tiếpstencils thường đầy đủ.
Vẽ một biểu đồ
biểu đồ đang dội khác dựa trên kinh nghiệm đó thì chuyện công cụ. Một bức ảnh đáng giá 1000
từ-loại.
Bạn thực sự muốn thoát khỏi đây hầu hết các lời 1000 bởi vì 1 điểm sử dụng một bức tranh này
là một bức hình có thể đại diện cho vấn đề lấy thông tin ở cấp độ cao hơn.
Đôi khi bạn muốn giải quyết vấn đề một cách chi tiết, nhưng mặt khác, bạn muốn có khả năng
làm việc với generality hơn.
Giữ khối kết cấu
mạnh tính môđun thiết kế của bạn là mục đích là để làm cho mỗi lớp thói quen hay như một "cái
hộp đen": Bạn biết chuyện gì đã xảy ra, và bạn biết điều gì sẽ đến, nhưng bạn không biết
chuyện gì sẽ xảy ra bên trong. Một

108 Chương 5: Thiết kế trong việc xây dựng


cái hộp đen như có một giao diện đơn giản và chẳng hạn à-chức năng được định nghĩa đó cho
bất cứ thông tin cụ thể có thể dự đoán sản lượng tương ứng một cách chính xác.
Khái niệm về những mô đun cho thông tin liên quan đến lẩn trốn, encapsulation, và thiết kế
heuristics khác. Nhưng đôi khi nghĩ về việc làm thế nào để tập hợp một hệ thống từ một tập
hợp các hộp đen cung cấp thông tin mà thông tin đang trốn và encapsulation không, như vậy,
khái niệm là giá trị gì trong túi trở lại.
Tóm Lược của Heuristics thiết kế
ở mức báo động, cùng nhiều hơn ở đây là một bản tóm lược của thiết kế heuristics lớn:
khá lập trình viên Capa về mảng- ble của việc làm cùng một nhiệm vụ tìm những vật thể Real-
World ■
mình ở trong 2 hoặc 3 cách, đôi khi uncon- dạng nhất quán các khái niệm trừu tượng
sciously ■, nhưng thông thường, đơn giản chỉ thay đổi, hoặc để chứa đựng việc triển khai chi
tiết
cung cấp ■ thanh lịch sự biến đổi khác.
- A. R. Brown và W. A. ■ thừa kế khi có thể
Sampson ■ Bí mật thông tin đang trốn (ẩn)
■ khu vực có khả năng xác định thay đổi
giữ chặt chẽ
… … Nhìn cho các bệnh thông thường các mẫu thiết kế
heuristics sau này đôi khi cũng có ích:
■ Nhắm gắn bó về mạnh mẽ
■ xây dựng các thứ bậc
■ Formalize hợp đồng lớp
■ gán trách nhiệm
■ thiết kế cho thử nghiệm
■ Tránh thất bại
chọn thời gian ràng buộc một cách có ý thức …
… Điểm Trung tâm Kiểm soát làm
■ nên sử dụng bạo lực
■ vẽ một sơ đồ
■ Giữ thiết kế của bạn mô đun

5,3 Khối nào: Heuristics thiết kế 109


Hướng dẫn sử dụng Heuristics
tiếp cận để thiết kế trong phần mềm có thể học hỏi từ tiếp cận để thiết kế trong các lĩnh vực
khác.
Một trong những cuốn sách trên heuristics gốc trong quá trình giải quyết các vấn đề là G. Polya
là cách giải quyết nó (1957). Polya là phương pháp giải quyết vấn đề một cách tổng quát tập
trung vào giải quyết các vấn đề trong toán học. Tìm từ 5 đến 10 là một phương pháp của ông ta
tóm lược của, thay đổi từ một bản tóm lược tương tự trong cuốn sách của ông ấy (emphases).
cc2e.com/0592 1 của ông. Sự thấu hiểu vấn đề. Bạn phải hiểu vấn đề.
Cái gì là điều chưa biết? Điều gì là những dữ liệu? Cái gì là điều kiện? Liệu có thể đáp ứng điều
kiện ấy? Là điều kiện đủ để xác định ẩn số? Hay là nó không đủ? Hoặc không cần thiết? Hay
trái ngược?
Vẽ một hình. Giới thiệu phù hợp nốt nhạc. Tách biệt những thành phần khác nhau của bệnh.
Có thể anh viết cho họ xuống?
2. Dựa vào bản chất mang một kế hoạch. Tìm ra mối liên hệ giữa những dữ liệu đó và không
rõ. Anh có thể có nghĩa vụ quân đồng minh để xem xét vấn đề nếu bạn không thể tìm thấy kết
nối trung gian. Cuối cùng thì bạn nên ra một kế hoạch trong giải pháp.
Bạn đã nhìn thấy các vấn đề trước? Hay bạn đã nhìn thấy các vấn đề tương tự trong một chút
thay đổi hình thành? Ông có biết một vấn đề liên quan đến? Ông có biết một của fermat rằng có
thể có ích?

Nhìn vào điều chưa biết! Và cố gắng suy nghĩ của một vấn đề quen thuộc có chung 1 hay
tương tự như là không rõ. Đây là một vấn đề liên quan đến công việc của anh và giải quyết
trước đây. Có thể dùng nó?
Bạn có thể dùng kết quả của nó? Bạn có thể sử dụng phương pháp của nó? Nên bạn giới thiệu
một số yếu tố làm phụ tá để tạo nên sử dụng của nó có thể phải không?
Anh có thể thông báo lại những vấn đề? Có thể bạn vẫn còn một cách khác? thông báo lại
những Quay lại để định nghĩa.
Nếu bạn không thể giải quyết được những vấn đề nội dung, cố gắng giải quyết một số vấn đề
liên quan đến đầu tiên.
Anh có thể hình dung ra có thể tiếp cận được vấn đề liên quan đến? Một vấn đề tổng quát hơn?
Một vấn đề đặc biệt hơn? Một vấn đề tương tự không? Anh có thể giải quyết một phần của vấn
đề?
Chỉ giữ một phần của bệnh, thả các phần khác; còn bao xa thì tới sau đó được quyết định
không rõ, nó thay đổi? Anh có thể rút ra những gì có ích từ dữ liệu? Có thể bạn nghĩ đến các
dữ liệu thích hợp cho việc quyết định không rõ không? Anh có thể thay đổi bí ẩn hoặc dữ liệu,
hoặc cả hai nếu cần thiết, nhờ đó, vô danh và mới là dữ liệu mới này gần tới nhau?
Bạn đã dùng tất cả dữ liệu? Bạn đã dùng toàn bộ điều kiện ấy? Ngươi lấy tất cả các khái niệm
căn bản tính đến tham gia vào các vấn đề?
3. Việc thực hiện kế hoạch. Thực hiện kế hoạch của anh.
Kế hoạch của anh tiến hành của giải pháp, kiểm tra từng bước. Các bạn có thể thấy rõ ràng
rằng bước là đúng? Ông có thể chứng minh rằng đó là đúng?
4. Nhìn lại. Phân tích các giải pháp.
Có thể bạn kiểm tra kết quả? Em đã kiểm tra biện luận? Anh có thể rút ra kết quả một cách
khác? Có thể bạn thấy nó nhìn sơ lược về?
Bạn có thể dùng kết quả, hoặc phương pháp, đối với một số vấn đề khác?
Tìm từ 5 đến 10 Polya G. phát triển một phương pháp để giải quyết các vấn đề trong toán học
đó là cũng rất hữu ích trong việc giải quyết các vấn đề trong thiết kế phần mềm (Polya năm
1957).

110 Chương 5: Thiết kế trong việc xây dựng


một trong những chỉ dẫn hiệu quả nhất là để không bế tắc trên một cách tiếp cận. Nếu
diagenericname- gramming thiết kế trong bộ sưu tập umlstencils không hoạt động, viết nó bằng
tiếng Anh. Viết một thử nghiệm nhỏ pro--gram. Hãy thử một phương pháp hoàn toàn khác.
Nghĩ về một si-giải pháp lực. Giữ phác thảo và phác họa với cây bút chì và não bộ của bạn sẽ
theo sau. Nếu mọi thứ đều thất bại, rút lui khỏi vấn đề. Theo nghĩa đen đi dạo, hoặc nghĩ về
một điều gì đó khác trước khi trả lại cho các vấn đề. Nếu bạn đã mang nó tốt nhất của mình và
không đi đâu, đưa nó ra khỏi đầu của mình cho một thời gian thường tạo ra kết quả nhanh hơn
là sự liên tục tuyệt đối có thể.
Bạn không cần phải giải quyết vấn đề toàn bộ thiết kế cùng một lúc. Nếu bạn mắc kẹt, nhớ rằng
1 điểm cần được quyết định nhưng nhận ra rằng bạn này chưa đủ đimua ít bia mà.- mation để
giải quyết các vấn đề cụ thể. Tại sao chiến đấu cho bạn qua 20 phần trăm các thiết kế khi nào
nó sẽ rơi vào nơi dễ dàng để lần sau đi qua không? Tại sao ra những quyết định xấu dựa trên
kinh nghiệm hạn chế với thiết kế khi mà bạn có thể làm được tốt sions deci- dựa trên kinh
nghiệm hơn sau? Một số người không dễ chịu nếu họ không đến để đóng lại sau một chu kỳ
thiết kế, nhưng sau khi anh đã tạo ra một vài thiết kế mà không giải quyết vấn đề, nó sẽ sớm
đến tự nhiên để lại chưa được giải quyết vấn đề cho đến khi bạn có thêm thông tin (Zahniser
1992, Beck 2000).
5. 4 thói quen thiết kế
trước đoạn tập trung vào heuristics liên quan đến thiết kế các thuộc tính-gì bạn muốn hoàn
thành được thiết kế để làm trông như thế nào. Đoạn này mô tả sự luyện tập heuris- đánh dấu ô
thiết kế, biện pháp có thể giúp mà thường tạo ra kết quả tốt.

Bạn có thể đã Iterate một trải nghiệm trong đó bạn học được rất nhiều từ viết một pro- gram đó
ước là các bạn có thể viết lại lần nữa, được hiểu biết sâu sắc đạt được từ viết nó lần đầu tiên.
Hiện tượng tương tự sẽ được áp dụng cho thiết kế, nhưng thiết kế là chu kỳ ngắn hơn và ảnh
hưởng lớn, vì vậy hạ nguồn mà bạn có thể trả để quay cuồng qua thiết kế một vài lần.
bạn đi từ điểm A đến điểm B và quay lại điểm A. ;B là một quá trình lặp thiết kế. Bạn thường
không đi từ điểm một điểm chỉ
điểm then chốt như bạn đi vòng qua và thiết kế ứng cử viên thử cách tiếp cận khác nhau, bạn
sẽ nhìn vào cả hai cấp cao và quan điểm ở mức độ thấp. Những bức vẽ lớn bạn có được từ
làm việc với mức độ- vấn đề cao sẽ giúp bạn để đặt những chi tiết ở mức độ thấp trong quan
điểm. Các chi tiết bạn có được từ làm việc với những vấn đề cấp thấp sẽ cung cấp một nền
tảng trong thực tế vững chắc để quyết định cấp cao. Các giật mạnh và kéo giữa cấp trên. và từ
dưới mức độ

5. 4 thói quen 111


loại thiết kế là một động lực khỏe mạnh; nó đang tạo ra một cấu trúc nhấn mạnh đó là ổn định
hơn một xây dựng hoàn toàn từ trên xuống hoặc dưới lên.
Nhiều lập trình viên-nhiều người, trong chuyện này-gặp khó khăn trong phạm vi cao cấp- giữa
và những lý do cấp thấp. Chuyển từ một ô xem của một hệ thống khác là về mặt tinh thần,
nhưng nặng nhọc thì điều cần thiết để tạo ra những mẫu thiết kế hiệu quả. Cho ngành giải exer-
cises để tăng cường khả năng linh động tinh thần của bạn, đọc Blockbusting khái niệm (Adams
2001), mô tả trong "Thêm Tài Nguyên" đoạn cuối chương.
Cross-Reference Refactor- Khi bạn đưa ra một nỗ lực đó dường như là thiết kế đầu tiên đủ tốt,
đừng có dừng lại!
Ing là một cách an toàn để thử khác nhau- nỗ lực thứ hai là gần luôn tốt hơn lần đầu tiên, và
bạn học thứ trên mỗi ent các giải pháp thay thế trong mã. Cho thêm về vấn đề này, thấy nỗ lực
có thể cải thiện chương tổng thể thiết kế. Sau khi cố gắng một ngàn anh bạn-
24, "Refactoring." cho một cái bóng đèn rials nhót trong các sợi với thành công không, Thomas
Edison đã hỏi nếu anh ấy cảm thấy như tin đã đưa thì thời gian của ông đã bị lãng phí kể từ khi
ông ta nhận ra rằng không có gì. "Vô lý," Edison là phải có trả lời. "Tôi đã phát hiện ra một ngàn
điều không." Trong nhiều trường hợp, giải quyết vấn đề một cách tiếp cận sẽ tạo ra hiểu biết
sâu sắc mà sẽ cho phép các bạn để giải quyết vấn đề sử dụng phương pháp khác đó là thậm
chí tốt hơn.
Phân chia và chinh phục
như Edsger Dijkstra chỉ ra, không có một hộp sọ đủ lớn để chứa tất cả các chi tiết của một
chương trình phức tạp, và điều đó cũng áp dụng tốt để thiết kế. Chương trình Chia vào lĩnh vực
khác nhau, quan tâm, và sau đó giải quyết mỗi khu vực cá nhân. Nếu bạn chạy vào một cái
chết trong một trong các lĩnh vực, iterate!
Tăng dần gọt giũa là một công cụ rất mạnh mẽ cho việc quản lý sự phức tạp. Như Polya recom-
and mended the broken trong giải quyết vấn đề toán học, hiểu vấn đề, nghĩ ra một kế hoạch,
thực hiện các kế hoạch, và rồi nhìn về gặp cô làm như thế nào (Polya năm 1957).
Và thiết kế tiếp cận Bottom-Up Top-Down
"Trên cao" và "dưới lên" có thể có một âm thanh cổ hủ, nhưng họ cung cấp cái nhìn sâu sắc về
việc tạo ra các vật thể thiết kế theo định hướng. Từ trên xuống dưới thiết kế bắt đầu ở mức cao
của trừu tượng. Căn cứ bạn định nghĩa giờ học hoặc các thiết kế nhưng đối với ele- ments.
Như các bạn có thể phát triển những thiết kế, bạn tăng độ chi tiết, nhận dạng các lớp học, hợp
tác cùng các lớp học từ mô, và các yếu tố thiết kế chi tiết.
Thiết kế từ dưới lên bắt đầu bằng việc nói chi tiết về phía generalities và làm việc. Nó thường
bắt đầu bằng việc nhận biết các vật dụng cụ thể và sau đó generalizes aggregations của vật thể
và các lớp học từ những căn cứ nói chi tiết.
Nhiều người biện luận rằng bắt đầu từ với generalities vehemently và tiến tới việc chi tiết cụ thể
là tốt nhất, và một số biện luận rằng bạn không thể xác định được thiết kế các nguyên tắc
chung cho tới khi bạn đã làm rõ các chi tiết đáng kể. Dưới đây là các cuộc tranh luận của cả hai
bên.

112 Chương 5: Thiết kế trong


lập luận ủng hộ cho việc xây dựng trên cao
những nguyên tắc chỉ đường cho đằng sau từ trên xuống dưới là ý kiến cho rằng bộ não của
con người có thể tập trung vào chỉ một số tiền chi tiết trong cùng một lúc. Nếu bạn bắt đầu với
các lớp học chung và phân hủy chúng vào nhiều các lớp học chuyên biệt từng bước một, não
bộ của bạn sẽ không buộc phải đối mặt với quá chi tiết cùng một lúc.
Sự phân chia và quá trình này lặp đi lặp lại trong chinh phục vài các giác quan. Trước tiên, nó
là lặp đi lặp lại bởi vì bạn thường không dừng lại sau một mức độ phân hủy. Em cứ đi cho
nhiều mức độ. Thứ hai, nó lặp đi lặp lại bởi vì bạn không thường chấp nhận lần thử đầu tiên
của bạn. Anh tan ra một chương trình theo cách này. Tại nhiều điểm trong sự phân hủy, bạn sẽ
có những lựa chọn con đường phân vùng các hệ thống con, đặt các kế thừa- ví dụ cái cây, và
những sáng tác dạng của vật thể. Anh chỉ có một chọn lựa và xem điều gì không sếp?- bút
mực. Rồi bạn bắt đầu lại và phân hủy cách khác và xem liệu có thể hoạt động tốt hơn. Sau một
vài lần, bạn sẽ có một tốt chuyện gì sẽ thành công và tại sao.
Bao xa anh tan ra một chương trình? Tiếp tục cho đến khi nó có vẻ như bừa bãi nếu nó sẽ dễ
dàng hơn để coù mức tiếp theo hơn để phân hủy nó. Làm việc cho đến khi bạn trở nên hơi mất
kiên nhẫn bằng cách nào dễ dàng rất rõ ràng và có vẻ như thiết kế. Vào thời điểm đó, là xong.
Nếu điều đó không rõ ràng, làm việc nhiều hơn. Nếu giải pháp đó thậm chí hơi phức tạp cho
anh bây giờ, nó sẽ là một chú gấu cho bất cứ ai đang làm việc trên nó sau.
Lý luận dưới lên trên
đôi khi từ trên xuống dưới này vậy trừu tượng đó là rất khó để bắt đầu. Nếu bạn cần phải làm
việc với một thứ vô hình, cố gắng từ dưới lên phương pháp thiết kế. Hãy tự hỏi mình, "Tôi biết
hệ thống này cần làm?" Chắc chắn, bạn có thể trả lời câu hỏi đó. Bạn có thể nhận biết một vài
trách nhiệm ở mức độ thấp mà bạn có thể gán các lớp học cụ thể. Ví dụ, bạn có thể đã biết
rằng một hệ thống cần để định dạng một báo cáo ular partic- tính toán, dữ liệu cho bản báo
cáo, trung tâm headings của nó, báo cáo hiển thị trên màn hình, in báo cáo về một máy in, và
vân vân. Sau khi bạn xác định và vài trách nhiệm ở mức độ thấp, bạn sẽ thường bắt đầu để
cảm thấy thoải mái, đủ để nhìn vào top 1 lần nữa.
Trong một số trường hợp khác, thiếu tá thuộc tính của những vấn đề đang thiết kế ra lệnh từ
robot- Tom. Bạn có thể phải đối mặt với các thiết bị phần cứng mà các yêu cầu giao diện sân
khấu với phần thiết kế của bạn.
Dưới đây là một số điều mà ta cần phải nhớ khi bạn làm vậy được cấu tạo từ dưới lên:
■ hỏi mình những gì anh biết hệ thống cần phải làm.
Nhận diện các vật thể bê tông ■ và trách nhiệm từ câu hỏi đó.
■ đồ vật quen thuộc, và xác định nhóm chúng sử dụng tổ chức hệ thống con, đóng gói- lứa tuổi,
trong vòng đồ vật hoặc cấu tạo di sản của cháu, theo mức nào thích hợp.
■ tiếp tục với mức độ kế tiếp, hoặc trở lên đến đỉnh và thử lại làm việc xuống.

5. 4 thói quen 113


không có tranh cãi thiết kế, đây thật sự
là chìa khóa khác biệt giữa từ trên xuống dưới và chiến lược từ dưới lên là rằng một người là
một vị trí chiến lược và decom- cái khác là một chiến lược cấu tạo. Đầu tiên bắt đầu từ những
vấn đề chung và vỡ ra nó thành từng mảnh nằm trong tầm kiểm soát; khởi đầu với từng mảnh
nằm trong tầm kiểm soát và xây dựng những mối một giải pháp chung. Cả hai phương pháp
tiếp cận có điểm mạnh và yếu- nesses mà các bạn sẽ muốn cân nhắc khi áp dụng chúng cho
các vấn đề thiết kế của bạn.
Sức mạnh của thiết kế từ trên xuống dưới là nó dễ dàng. Người giỏi về một số thứ- phá thành
thành phần lớn, và lập trình viên đặc biệt giỏi về nó.
Một sức mạnh của thiết kế từ trên xuống dưới này là bạn có thể hoãn việc xây dựng chi tiết. Kể
từ khi các hệ thống thường nên rối tung những thay đổi trong việc xây dựng chi tiết (ví dụ, các
thay đổi trong một cấu trúc tập tin hay định dạng một báo cáo) thì thật hữu ích để biết rằng
những chi tiết sớm nên được giấu trong các lớp học ở dưới đáy của trật tự.
Một sức mạnh của sự từ dưới lên phương pháp này là kết quả trong sớm identifica thường--đổi
của cần chức năng tiện ích, dẫn đến một, well-gọn đối chiếu với cuộc thiết kế. Nếu hệ thống
tương tự đã được xây dựng, cách tiếp cận từ dưới lên cho phép bạn bắt đầu thiết kế của hệ
thống mới bằng cách nhìn vào các phần khác của hệ thống cũ và hỏi "Tôi có thể tái sử dụng?"
một sự yếu kém của nền được cấu tạo từ dưới lên phương pháp này là rất khó để sử dụng độc
quyền.
Hầu hết mọi người giỏi việc lấy một khái niệm lớn và vỡ nó thành những khái niệm nhỏ hơn
hơn là dùng những khái niệm nhỏ và tạo ra một khối lớn. Nó giống như là cái assem cũ- ble tự
vấn đề: Tôi nghĩ là tôi đã làm, vậy tại sao điều đó lại có cái hộp vẫn có phần trong đó không?
May mắn thay, bạn không cần phải sử dụng từ dưới lên phương pháp cấu tạo độc quyền.
Một sự yếu kém của từ dưới lên chiến lược thiết kế là đôi khi bạn nhận ra rằng mình không thể
xây dựng một chương trình từ những mảnh vỡ bạn đã bắt đầu với. Anh không thể tạo một
không khí- máy bay của những viên gạch, và bạn có thể phải làm việc ở trên đỉnh trước khi bạn
biết những loại mảnh bạn cần ở dưới đáy.
Tóm tắt, trên cao có xu hướng bắt đầu đơn giản, nhưng đôi khi ở mức độ thấp sự phức tạp gợn
sóng trở lại đến đỉnh cao, và những phản ứng dây chuyền này có thể làm được nhiều thứ phức
tạp hơn họ thực sự cần được. Dưới lên có xu hướng phức tạp, nhưng nhận biết bắt đầu sự
phức tạp sớm dẫn đến thiết kế tốt hơn của các lớp học ở mức cao hơn-nếu sự phức tạp không
tor- pedo toàn bộ hệ thống đầu tiên!
Suy cho cùng, từ trên xuống dưới và thiết kế từ dưới lên không chiến lược cạnh tranh- chúng
đôi bên cùng có lợi. Thiết kế là một quá trình dựa trên kinh nghiệm đó thì chuyện, điều này có
nghĩa là không solu--đổi đảm bảo sẽ làm việc mỗi thời gian. Chứa thành phần của thiết kế phép
thử và sai sót. Thử nhiều cho đến khi bạn tìm thấy một cách tiếp cận mà phù hợp.

114 Chương 5: Thiết kế trong việc xây dựng


một chương trình thí nghiệm
cc2e.com/0599 nguyên mẫu, đôi khi bạn không thể biết được một thiết kế sẽ hoạt động tốt hơn
cho đến khi bạn dưới- vài việc triển khai chi tiết. Bạn có lẽ không biết nếu một cơ sở dữ liệu đặc
biệt orga- nization sẽ làm việc cho đến khi bạn biết liệu nó sẽ gặp các mục tiêu về hiệu năng.
Bạn có thể không biết liệu một hệ thống con sẽ làm việc thiết kế đặc biệt cho đến khi bạn chọn
các thư viện GUI kdeprint bạn sẽ cụ thể được làm việc với. Đây là những ví dụ về căn "đời tội
ác" của thiết kế phần mềm-bạn không thể hoàn toàn xác định vấn đề thiết kế cho tới khi bạn đã
ít nhất một phần nào đó đã được giải quyết nó.
Một kỹ thuật chung để giải quyết các những câu hỏi này với giá thành thấp nhất là nguyên thủy-
gõ thử nghiệm. Từ "bản mẫu" có nghĩa là nhiều thứ khác nhau với những người khác
(McConnell năm 1996). Trong hoàn cảnh này, nguyên mẫu, có nghĩa là viết những tuyệt đối số
tiền tối thiểu mã throwaway cần thiết để trả lời một câu hỏi thiết kế cụ thể.
Hoạt động kém khi các nhà phát triển nguyên mẫu, không có kỷ luật về việc viết những abso-
đàn tối thiểu là cần thiết để trả lời mã một câu hỏi. Giả sử thiết kế, câu hỏi là, "Có thể khuôn khổ
cơ sở dữ liệu chúng ta đã chọn hỗ trợ các giao dịch âm lượng chúng ta cần?" Bạn sẽ không
cần phải viết bất kỳ sản xuất mã lệnh để trả lời câu hỏi đó. Cô không cần phải biết cơ sở dữ
liệu từ cụ thể. Bạn chỉ cần biết đủ để ước lượng đưa vấn đề không-số bảng, số mục nhập trong
bàn, và vân vân. Sau đó, bạn có thể viết rất đơn giản bản mẫu mã sử dụng bàn với cái tên như
là bàn1, Bàn2, và cột1, và cột2, tụ tập ở bàn bằng phế dữ liệu, và làm thử nghiệm khả năng
của bạn.
Nguyên mẫu, cũng được thể hiện một cách kém cỏi khi thiết kế câu hỏi là không đủ cụ thể. Một
câu hỏi như "Sẽ thiết kế cơ sở dữ liệu này công việc cơ cấu gì?" không cung cấp đủ hướng cho
bản mẫu. Một câu hỏi như "Sẽ thiết kế cơ sở dữ liệu này ăn tối- cảng khuôn khổ các giao dịch
1000 mỗi giây dưới những giả định X, Y, và Z?" cung cấp một nền tảng vững vàng hơn cho bản
mẫu.
Cuối cùng, nguy cơ bản mẫu phát sinh khi các nhà phát triển không đối xử với mã như
throwaway mã. Tôi đã thấy rằng nó không thể nào cho mọi người để viết tuyệt đối số tiền tối
thiểu mã lệnh để trả lời một câu hỏi nếu họ tin rằng mã cuối cùng sẽ kết thúc trong các hệ thống
sản xuất. Họ kết thúc việc triển khai các hệ thống thay vì nguyên thủy- gõ. Bởi việc chấp nhận
thái độ đó đã từng trả lời câu hỏi là mã nguồn sẽ bị vứt đi, bạn có thể giảm thiểu nguy hiểm
này. Một cách để tránh vấn đề này là để tạo nguyên mẫu trong một công nghệ khác nhau hơn
mã sản xuất. Bạn có thể nguyên mẫu thiết kế Java trong một Python hoặc một giao diện người
dùng chế nhạo trong Microsoft PowerPoint. Nếu bạn làm mẫu sử dụng sản xuất tạo ra công
nghệ, một tiêu chuẩn thiết thực mà có thể giúp là đòi hỏi tên lớp hoặc cái tên cho mã nguyên
mẫu gói được prefixed với nguyên mẫu đầu tiên. Rằng ít nhất khiến là một lập trình viên suy
nghĩ kỹ trước khi cố gắng để mở rộng pro- mã totype (Stephens năm 2003).

5. 4 Thiết Kế sinh nhật thứ 115


sử dụng với các hoạt động kỉ luật, nguyên mẫu, là một nhà thiết kế công cụ workhorse đã thiết
kế để chống đời tội ác. Được sử dụng mà không kỉ luật, nguyên mẫu, thêm một số đời tội ác
của riêng mình.
Thiết kế mang tính hợp tác
Cross-Reference cho nhiều người hơn trong thiết kế, hai mặt thường tốt hơn một, dù là hai mặt
được sắp xếp
chi tiết về devel cộng tác- chính thức hay chính thức. Cộng tác có thể lấy được của một vài
dạng: opment, thấy 21, "Hợp tác chương trình xây dựng." Bạn chính thức đi trên ■ để một bàn
của đồng nghiệp và hỏi nảy về một số ý tưởng xung quanh.
■ bạn và đồng nghiệp ngồi lại với nhau trong phòng họp và thiết kế thay đổi- người bản xứ vẽ
trên một bảng trắng.
■ bạn và đồng nghiệp ngồi lại với nhau tại bàn phím và làm chi tiết thiết kết bạn đang sử dụng
ngôn ngữ lập trình-điều đó là, bạn có thể sử dụng đôi lập trình, mô tả trong chương 21, "Xây
dựng cộng tác."
Bạn nên sắp xếp cuộc họp ■ để đi qua các ý tưởng thiết kế của bạn với một hay nhiều co- công
nhân.
■ lịch Anh bảo trì chính thức với tất cả cấu trúc mô tả trong chương 21.
■ Bạn không làm việc với bất kỳ ai có thể xem xét lại công việc của các bạn, vì thế bạn làm một
số công việc ban đầu, đặt nó vào một ngăn kéo, và quay trở lại để nó một tuần sau đó. Bạn sẽ
có quên- 10, đủ để bạn có thể tự cho mình một bài phê bình khá tốt.
■ bạn hỏi một người bên ngoài công ty anh giúp đỡ: gửi câu hỏi để một diễn đàn ized- hoặc
đặc biệt trong file medianame.
Nếu mục tiêu là đảm bảo chất lượng, tôi thường khuyến nghị nên xem xét lại có cấu trúc prac
nhất- tice, Chậm lại, cho chính thức những lý do được mô tả trong chương 21. Nhưng nếu mục
đích là để thúc đẩy sự sáng tạo và làm tăng số lượng thiết kế giải pháp thay thế được tạo ra,
không chỉ để tìm gặp lỗi, cách tiếp cận có cấu trúc ít làm việc tốt hơn. Sau khi bạn đã quyết định
ăn một thiết kế cụ thể, chuyển sang một kiểm tra chính thống hơn cũng thích đáng, tùy thuộc
vào bản chất của dự án của mình.
Bao nhiêu thiết kế là chưa đủ sao?
Chúng ta cố gắng để giải quyết vấn đề đôi khi chỉ là bản phác thảo của barest một kiến trúc là
vạch ra trước khi mã hóa
bởi rushing qua bắt đầu. Những thời điểm khác, các đội tạo thiết kế tại chẳng hạn độ chi tiết
thiết kế mã hóa đó quá trình mà đủ thời gian là sang bên trái trở thành một chủ yếu tập thể dục
cơ khí. Bao nhiêu thiết kế các bạn nên làm gì trước khi bạn
cuối của dự án để khám phá bắt đầu mã hóa?
Những sai sót đã được tạo ra bởi vì chúng ta vội vã đưa qua một câu hỏi liên quan là cách để
làm cho những thiết kế chính thức. Anh có cần chuyên nghiệp, được đánh bóng
quá trình thiết kế. Thiết kế biểu đồ, hay sẽ ảnh chụp nhanh của một vài kỹ thuật số bản vẽ trên
một bảng trắng được - Glenford Myers đủ chưa?

Nước ta ghi nhận 116 Chương 5: Thiết kế trong việc xây dựng
quyết định bao nhiêu thiết kế để làm trước khi bắt đầu mã hóa toàn diện và bao nhiêu đúng thủ
tục thôi để dùng trong ghi lại thiết kế đó khó có thể là một khoa học chính xác. Kinh nghiệm của
đội, dự kiến suốt quãng đời của hệ thống, mức độ mong muốn của độ tin cậy, và kích thước
của dự án và đội đều nên được xem xét. 5-2 bàn để tiếp xúc của mỗi yếu tố ảnh hưởng đến sự
thiết kế tiếp cận.
5-2 bàn thiết kế đúng thủ tục thôi và độ chi tiết cần
độ chi tiết cần thiết trong thiết kế tài liệu hướng dẫn trước khi xây dựng nhân tố
thiết kế/đội xây dựng đúng thủ tục thôi thấp chi tiết đúng thủ tục thôi đã trải nghiệm sâu thấp
trong khu vực các ứng dụng.
Thiết kế/đội xây dựng trung bình phương tiện chi tiết đúng thủ tục thôi đã trải nghiệm sâu
nhưng là chưa có kinh nghiệm trong khu vực các ứng dụng.
Thiết kế/đội xây dựng trung đến chi tiết cao Low-Medium đúng thủ tục thôi là chưa có kinh
nghiệm.
Thiết kế/đội xây dựng chi tiết - đã vừa hôi cao tốc độ thay thế nhân viên.
Á"©ng dá"¥ng Chi tiết cao cao an toàn-trích. đúng thủ tục thôi
Á"©ng dá"¥ng chi tiết Medium-High vừa đúng thủ tục thôi cho nhiệm vụ rất quan trọng.
Dự án nhỏ. Chi tiết thấp dự án đúng thủ tục thôi to lớn, thấp. Chi tiết truyền thông phương tiện

phần mềm đúng thủ tục thôi dự kiến sẽ chi tiết thấp đúng thủ tục thôi có thấp suốt cuộc đời
ngắn (tuần hoặc tháng).
Phần mềm này dự kiến đến trung bình phương tiện chi tiết đúng thủ tục thôi có một cuộc đời
dài (tháng hoặc năm).
Hai hoặc nhiều hơn những yếu tố có thể đi vào chơi trên dự án nào đặc trưng, và trong một vài
trường hợp, các yếu tố có thể cung cấp các lời khuyên. Ví dụ, bạn có thể có một đội ngũ đang
làm việc rất có kinh nghiệm an toàn trên phần mềm quan trọng. Trong trường hợp đó, ông đã
có thể muốn err bên thiết kế ở cấp độ cao hơn chi tiết và đúng thủ tục thôi. Trong trường hợp
như thế, bạn sẽ cần phải cân nhắc các yếu tố trọng của mỗi và đưa ra nhận xét về điều thực sự
quan trọng.
Nếu được thiết kế là trái với mỗi cá nhân, sau đó, khi thiết kế xuống xe như mức của một nhiệm
vụ mà các bạn đã làm trước khi hay ở một sự sửa đổi đơn giản hoặc phần mở rộng của một
nhiệm vụ, và bạn có lẽ đã sẵn sàng để dừng việc thiết kế và bắt đầu mã hóa.

5. 4 thói quen thiết kế 117


nếu tôi không thể quyết định sâu sắc để điều tra một thiết kế trước khi tôi bắt đầu mã hóa, tôi có
khuynh hướng err bên đi vào chi tiết hơn. Lỗi thiết kế lớn nhất phát sinh từ những trường hợp
trong đó tôi nghĩ tôi đã đi đủ xa rồi, nhưng nó sau đó hóa ra là tôi đâu có đi đủ xa để nhận ra có
thêm những thách thức thiết kế. Nói cách khác, các vấn đề thiết kế lớn nhất thường phát sinh
từ khu vực không tôi biết đã khó khăn và tạo ra những mẫu thiết kế xấu, nhưng từ khu vực cho
tôi nghĩ thật dễ dàng và không tạo ra bất kỳ thiết kế cho tất cả. Tôi hiếm khi gặp phải dự án
đang phải chịu đựng hoàn thành quá nhiều việc thiết kế.
Tôi chưa bao giờ gặp một người, mặt khác, thỉnh thoảng tôi đã thấy các dự án mà đang khổ sở
vì quá nhiều
sẽ trở thành ai sẽ muốn tạo tài liệu hướng dẫn. Như là Định luật Gresham kỳ rằng "được lập
trình hoạt động có xu hướng lái đọc 17,000 trang của những tư liệu được dàn dựng- mentation,
và nếu có, ra hoạt động nonprogramd" (Simon năm 1965). Một trẻ sinh thiếu tháng vội vã đưa
ra một thiết kế sơn móng tay
tôi sẽ giết hắn, đem nó ra khỏi mô tả là một ví dụ rất hay về đạo luật đó. Tôi thà thấy 80% của
thiết kế
các gene bể bơi. đi vào việc tạo ra và cố gắng khám phá nhiều thiết kế giải pháp thay thế và
20% đi - Joseph vào việc tạo ra ít tinh vi Costello tài liệu hướng dẫn hơn để có 20% đi vào việc
tạo ra những sản phẩm thay thế thiết kế không đẹp lắm và 80% đi vào tài liệu hướng dẫn đánh
bóng của thiết kế mà không tốt lắm.
Chụp được thiết kế của bạn làm việc
cc2e.com/0506 cách tiếp cận truyền thống để lưu giữ những việc thiết kế đó là để viết lên các
thiết kế trong một cho- mal tài liệu thiết kế. Tuy nhiên, bạn có thể chụp được thiết kế ở nhiều
vấn đề tương tự mà làm việc tốt trên các dự án nhỏ, dự án không chính thức, hoặc các dự án
mà cần lửa cách giảm cân- ghi lại một thiết kế:
Tin xấu là, trong tài liệu hướng dẫn vào thiết kế chèn tự mã chìa khoá tài liệu quyết định theo
ý kiến thiết kế, chúng ta sẽ không bao giờ tìm thấy mã bình luận, thường trong tập tin hay hạng
đầu trang. Khi bạn vài cách tiếp cận này viên đá. Chúng ta sẽ không bao giờ tìm thấy một quá
trình mà cho phép với một tài liệu hướng dẫn người trích xuất như javadoclanguage, thanh
thản trước rằng tài liệu hướng dẫn thiết kế này
chúng tôi thiết kế trong một phần mềm trên mỗi-- sẽ dễ dàng có sẵn để là một lập trình viên làm
việc trên một đoạn mã hóa, và nó
có lý trí. fectly Những điều tốt đẹp sẽ cải thiện kết quả cơ hội các lập trình viên sẽ giữ các tài
liệu hướng dẫn thiết kế lý do- tin tốt là chúng ta có thể giả dối đi.
- David Parnas và Paul ably đã được cập nhật.
Clements chụp được thiết kế thảo luận và quyết định trên Wiki, có các cuộc thảo luận trong
thiết kế của bạn viết, trong một dự án wiki, (nghĩa là một bộ sưu tập của các trang Web có thể
được sửa lại cút đi.- ily bởi bất cứ ai trên dự án của mình bằng cách sử dụng một trình duyệt
Web). Điều này sẽ chụp được thiết kế của bạn coi thường- cussions và quyết định tự động, dù
với các hao phí của gõ hơn là nói chuyện. Bạn cũng có thể dùng để lưu giữ những bức ảnh kỹ
thuật số Wiki để bổ sung văn bản thảo luận, được kết nối với các trang web giúp hỗ trợ thiết kế
quyết định, giấy trắng, và các vật liệu này. Kỹ thuật này thực sự có ích nếu bạn của đội phát
triển là geo- thể hiện qua phân bổ.
E-mail viết bản tóm tắt sau một cuộc thảo luận, áp dụng những thiết kế thực hành designating
ai đó để viết một bản tóm lược trong buổi thảo luận - nhất là những gì đã quyết định-và gửi cho
các đội dự án. Kho lưu một bản sao của e-mail trong dự án này là e-mail thư mục công cộng.

1 1 8 Chương 5: Thiết kế trong việc xây dựng


dùng máy ảnh kỹ thuật số một rào cản chung để ghi lại thiết kế đó là sự nhạt nhẽo đó trong việc
tạo ra các bản vẽ thiết kế ở một số các công cụ vẽ phổ biến. Nhưng các tài liệu hướng dẫn sự
lựa chọn không chỉ giới hạn trong hai lựa chọn của "chụp được thiết kế trong một định dạng
đẹp- ted, cách ghi chính thức" "Không tài liệu hướng dẫn thiết kế, so với ở tất cả."
chụp ảnh của bảng trắng bản vẽ với máy ảnh kỹ thuật số và sau đó nhúng phim đó vào các tài
liệu truyền thống có thể là một nỗ lực thấp cách để có được 80% của những lợi ích của việc lưu
thiết kế bản vẽ bằng cách làm khoảng 1 phần trăm của công việc cần thiết nếu bạn sử dụng
một công cụ vẽ.
Lưu thiết kế lật hải đồ không có lý nói thiết kế của bạn có những tài liệu đã để phù hợp với bức
thư chuẩn kích cỡ giấy. Nếu em cứ thiết kế lớn lật các bản vẽ biểu đồ giấy, bạn đơn giản chỉ
cần sự lật hải đồ trong kho lưu một vị trí thuận tiện-hoặc, bài viết tốt hơn nữa, chúng lên tường
xung quanh khu vực dự án để mọi người có thể dễ dàng biết đến chúng và cập nhật khi cần
thiết.
cc2e.com/0513 họ sử dụng CRC (Hạng, trách nhiệm, và cộng tác viên của) bài một giải pháp
thay thế cho công nghệ thấp để ghi lại thiết kế này là sử dụng thẻ chỉ mục. Trên mỗi nhà thiết
kế, viết một tên lớp, trách nhiệm của lớp học, và đối tác (các lớp học khác mà hợp tác với lớp).
Một nhóm thiết kế sau đó có hiệu quả với bài cho tới khi họ hài lòng mà họ đã tạo ra một thiết
kế tốt. Vào thời điểm đó, bạn đơn giản chỉ cần lưu lá bài của tương lai tham khảo. Chỉ số bài rẻ,
unintimidating, và tính di động, và họ khuyến khích sự tương tác (Beck nhóm 1991).
Tạo bộ sưu tập umlstencils biểu đồ ở mức độ chi tiết thích hợp một kỹ thuật phổ biến cho
diagramming thiết kế được gọi là mô hình thống nhất ngôn ngữ (bộ sưu tập umlstencils), được
định nghĩa bởi những vật thể nhóm quản lý (Fowler năm 2004). Tìm sớm hơn trong chương
này hoá hay ở các của hiệu bán là một ví dụ của một bộ sưu tập umlstencils lớp sơ đồ. Bộ sưu
tập umlstencils cung cấp các đại diện- resentations khẳng định điều cho những thực thể thiết kế
và các mối quan hệ. Bạn có thể sử dụng phiên bản không chính thức của bộ sưu tập
umlstencils để khám phá và thảo luận về cách tiếp cận thiết kế. Bắt đầu với phác thảo và thêm
chi tiết tối thiểu chỉ sau khi bạn đã đang chờ một khoản giải pháp thiết kế cuối cùng. Bởi vì bộ
sưu tập umlstencils ở chuẩn- ized, hỗ trợ đồng cảm nào trong các ý tưởng thiết kế giao tiếp và
nó có thể tăng tốc quá trình suy xét thiết kế giải pháp thay thế khi làm việc trong một nhóm.
Các kỹ thuật này có thể làm việc theo nhiều cách phối hợp, nên cảm thấy tự do trộn và ghép
những cách tiếp cận trong một dự án nhân cơ sở dự án hoặc thậm chí trong lĩnh vực khác
nhau của một dự án.
5,5 bình luận về hệ phương pháp phổ biến nhất
lịch sử của thiết kế trong phần mềm này đã được đánh dấu bởi kẻ cuồng tín những người ủng
hộ vang dội-- flicting thiết kế tiếp cận. Khi tôi xuất bản phiên bản đầu tiên của mã hoàn thành
vào đầu những năm 1990, thiết kế có nhiệt tình đã ủng hộ rác xung quanh tôi và sự vượt thiết
kế mỗi mỗi thiết kế t trước khi bắt đầu mã hóa. Điều đó khuyến cáo không có nghĩa lý gì cả.

Thêm 119
người thuyết giáo tài nguyên phần mềm ấn bản khi tôi viết bài này vào giữa những năm-2000,
một phần mềm tập tục cãi cọ vì không
có kỷ luật như một activ thiết kế- làm bất kỳ thiết kế ở tất cả. "Thiết kế lớn lên phía trước là
BDUF," họ nói. "BDUF thật tồi tệ. Anh đang tiêu năng lượng dữ dội làm ity tất cả chúng ta cảm
thấy tốt hơn không làm bất kỳ thiết kế trước khi bạn bắt đầu mã hóa!"
có tội. Không bao giờ chúng ta có thể có cấu trúc vật hoặc đủ- Trong 10 năm con lắc đã đã lừa
từ "thiết kế mọi thứ" để "thiết kế gì cả." một cách mạnh
mẽ đủ để đạt được nhưng các giải pháp thay thế cho BDUF là ain't no phía trước, thiết kế đó là
một thiết kế nhỏ lên đầu tiên
trong cuộc đời này cõi Niết bàn. Chúng ta (LDUF) hoặc đủ phía trước-ENUF thiết kế. tất cả xe
tải quanh một loại tội lỗi do có gốc học được ở một impres cơ bản là làm cách nào bạn biết nói
thế nào là đủ? Đó là một sự phán xét gọi, và không ai có thể làm
sionable tuổi. Nhưng tớ cá là gọi một cách hoàn hảo. Nhưng trong khi bạn không thể biết chính
xác đúng số lượng các thiết kế với bất kỳ
mà hầu hết chúng ta đang tự tin tốt hơn, 2 lượng thiết kế để bảo đảm là sai mỗi lần: thiết kế
các nhà thiết kế hơn những người theo chủ nghĩa thuần tuý mỗi chi tiết cuối cùng và không
phải thiết kế gì hết đâu. Hai vị trí bởi sẽ tán thành việc thừa nhận.
- P. J. Plauger cực đoan trên hai quy mô biến chỉ có 2 vị trí đó luôn sai!
Như P. J. Plauger nói, "dogmatic càng bạn áp dụng phương pháp thiết kế, càng ít trong đời
thực khó khăn bạn sẽ giải quyết" (Plauger 1993). Đối xử với thiết kế như một người xấu xa,
trông cẩu thả, dựa trên kinh nghiệm đó thì chuyện quá trình. Không chấp nhận đầu tiên xảy ra
với bạn thiết kế.
Hợp tác. Phấn đấu cho sự đơn giản. Nguyên mẫu khi ông cần. Iterate, iterate, và iter- ăn nữa.
Bạn sẽ hạnh phúc với thiết kế.
Thêm Tài Nguyên
cc2e.com/0520 thiết kế phần mềm là một lĩnh vực giàu tài nguyên dồi dào. Thách thức là tài
nguyên mà sẽ được nhận dạng hữu ích nhất. Dưới đây là một vài gợi ý.
Thiết kế phần mềm, Tướng quân
Weisfeld, Matt. Các Object-Oriented quá trình suy nghĩ, 2d ed. SAMS, năm 2004. Đây là một
cuốn sách có thể tiếp cận được giới thiệu hướng đối tượng lập trình. Nếu bạn đã famil- iar với
hướng đối tượng lập trình, bạn có thể cần một cuốn sách tiên tiến hơn, nhưng nếu bạn lấy cơ
hội trải nghiệm trong định hướng đối tượng, cuốn sách này giới thiệu vui- damental hướng đối
tượng khái niệm, bao gồm các vật thể, các lớp học, giao diện, di sản của cháu, polymorphism,
quá tải, các lớp học trừu tượng, và kết hợp, construc hiệp hội- tors/destructors, trường hợp
ngoại lệ, và những người khác.
Cam bốtname, Arthur J. Object-Oriented Heuristics thiết kế. Việc đọc sách, MA: Addison-
Wesley, năm 1996.
Cuốn sách này là dễ dàng đọc và tập trung vào thiết kế ở mức độ lớp.
Plauger, P. J. lập trình với một mục đích: quay cóp trên thiết kế phần mềm. Englewood nằm
trên các vách đá NJ:
PTR, Xin đừng hại tôi Hall, năm 1993. Tôi nhặt được nhiều điều về phần mềm tốt từ việc đọc
cuốn sách này thiết kế như từ cuốn sách nào khác tôi đã đọc. Plauger rất từng một loạt các
thiết kế có thể- đến gần, hắn Pragmatic Chaos, và ông ta là một nhà văn vĩ đại.

120 Chương 5: Thiết kế trong việc xây dựng


Meyer, Buồng 28. Phần mềm Object-Oriented xây dựng, 2d ed. New York,: Pren thiệuvới ông-
tice Hall PTR, năm 1997. Meyer quà tặng một quảng bá, thật khó-cứng cáp đối tượng lõi ạnh
lập trình.
Raymond, Eric S. Nghệ Thuật lập trình UNIX. Boston, MA: Addison-Wesley, năm 2004.
Đây là một nghiên cứu xem thiết kế phần mềm qua kính màu UNIX. Đoạn 1. 6 là một đặc biệt là
ngắn gọn dài 12 trang giải thích về 17 chìa khóa thiết kế UNIX nguyên tắc.
Larman, Craig. Áp dụng bộ sưu tập umlstencils và các kiểu: Object-Oriented Giới thiệu về phân
tích và thiết kế và quá trình hợp nhất, 2d ed. Englewood nằm trên các vách đá, NJ: Xin đừng
hại tôi Hall, năm 2001.
Cuốn sách này là một vật thể giới thiệu về phổ biến thiết kế một cách mạnh mẽ trong ngữ cảnh
của quá trình hợp nhất. Nó cũng thảo luận U.S. hướng đối tượng phân tích.
Lý thuyết
Parnas thiết kế phần mềm, David L., và Paul C. Clements. "Một quá trình thiết kế có lý trí: Làm
cách nào và tại sao giả mạo được nó." Các giao dịch trên phần mềm kỹ thuật IEEE SE 12,
không. 2 tháng 2 năm 1986) (: 251-57.
Đồ bài báo đề khoảng cách giữa các chương trình được thực sự được thiết kế như thế nào và
cách bạn đôi khi ước ao có được thiết kế. Vấn đề chính là không có ai từng thực sự đi qua một
quá trình thiết kế có trật tự có lý trí, nhưng mà hướng đến điều này tạo nên thiết kế tốt hơn vào
phút cuối.
Tôi không biết về bất cứ điều trị toàn diện của thông tin đang lẩn trốn. Phần mềm nhất- sách
giáo khoa kỹ thuật thảo luận về 1 cách ngắn gọn, thường xuyên trong ngữ cảnh của vật thể
hướng đến các kỹ thuật. Giấy tờ Parnas 3 được liệt kê dưới đang ra khởi thuyết trình của
những ý tưởng và có lẽ vẫn còn tài nguyên trên thông tin tốt nhất đang lẩn trốn.
Parnas, David L. "tiêu chí sẽ được sử dụng trong các hệ thống bừa bãi môđun." Thông tin liên
lạc của A.C.M, 5, không. 12 tháng 12 năm 1972 (): 1053-58.
Parnas, David L. "Thiết kế phần mềm để tạo điều kiện dễ dàng và giảm sút." Phần mở rộng các
giao dịch trên phần mềm kỹ thuật IEEE SE-5, không. 2 tháng 3 năm 1979) (: 128-38.
Parnas, David L., Paul C. Clements, và D. M. Weiss. "Hướng cấu trúc của Com- plex Hệ
Thống." Các giao dịch trên phần mềm kỹ thuật IEEE SE-11, không. 3 tháng 3 năm 1985) (:
259-66.
Các mẫu thiết kế
, Erich Gamma (γ), et thật 100%. Các mẫu thiết kế. Việc đọc sách, MA: Addison-Wesley, năm
1995. Cuốn sách này bởi "Nhóm 4" là những cuốn sách có ảnh hưởng sâu sắc vào thiết kế các
mẫu hình.
Shalloway, Alan, và James R. Trott là gì. Các mẫu thiết kế giải thích. Boston, MA: Addison-
Wesley, năm 2002. Cuốn sách này có chứa một sự rất dễ đọc các mẫu thiết kế giới thiệu về.

Tài nguyên thêm 121


Thiết Kế nói chung
Adams, James L. Blockbusting khái niệm: một hướng dẫn viên để ý tưởng tốt đẹp hơn, ed.
Cambridge, ngày 4 MA: xuất bản năm 2001. Perseus Mặc dù không phải đặc biệt về thiết kế
phần mềm, cuốn sách được viết để dạy được thiết kế để làm sinh viên kỹ thuật ở Đại học
Stanford. Thậm chí nếu bạn không hề gì, cuốn sách thiết kế là một cuộc thảo luận thú vị của sự
sáng tạo nghĩ pro- cesses. Nó bao gồm nhiều bài tập trong các loại nghĩ required form mới có
hiệu quả thiết kế. Nó cũng chứa một annotated bibliography vào thiết kế sáng tạo và suy nghĩ.
Nếu bạn thích giải toán, bạn sẽ thích cuốn sách này.
Polya, G. cách giải quyết: một khía cạnh mới của phương pháp toán học, 2d ed. Princeton, NJ:
Đại học Princeton báo chí, năm 1957. Cuộc thảo luận này của heuristics và giải quyết các vấn
đề tập trung vào toán học nhưng này có thể áp dụng cho phát triển phần mềm. Cuốn sách
Polya là người đầu tiên viết về việc sử dụng heuristics trong giải quyết vấn đề toán học. Nó
được một sự nhận biết rõ ràng giữa hỗn độn heuristics dùng để khám phá ra các giải pháp và
các kỹ thuật tidier dùng để giới thiệu họ khi họ bị phát hiện rồi. Nó không dễ đọc sách, nhưng
nếu bạn thích heuristics, cuối cùng bạn sẽ đọc nó, cho dù em có muốn hay không. Cuốn sách
Polya khiến nó trở nên rõ ràng rằng việc giải quyết các vấn đề không phải là một hoạt động
được định trước và ít có điều kiện đó bất kỳ một phương pháp tính toán là chân cô muốn đi bộ
xích. Tại một thời điểm nào đó, Microsoft đã cho quyển sách này để tất cả các lập trình viên
mới của nó.
Michalewicz, Zbigniew, và David B. Fogel. Làm thế nào để giải quyết nó: Heuristics hiện đại.
Berlin:
Springer-Verlag, năm 2000. Đây là một phương pháp điều trị được cập nhật của cuốn sách
Polya khá dễ dàng hơn để đọc và đó cũng chứa một số nonmathematical ví dụ.
Simon, Herbert. Các ngành khoa học về nhân tạo, 3d ed. Cambridge, MA: MIT báo chí, năm
1996.
Cuốn sách thú vị này vẽ một sự khác biệt này giữa khoa học nghiên cứu đối phó với thế giới tự
nhiên (sinh học, địa chất học,...) và khoa học nghiên cứu đối phó với thế giới nhân tạo cre- ated
bởi con người (kinh doanh, kiến trúc, và khoa học máy tính). Sau đó nó thảo luận U.S. các đặc
điểm của ngành khoa học về nhân tạo, emphasizing khoa học về thiết kế. Nó có một học giả và
sắc là xứng đáng để đọc cho bất cứ ai cũng có ý định sự nghiệp trong phát triển phần mềm hay
bất kỳ nhân tạo cánh đồng." "
Thủy tinh, Robert L. sự sáng tạo phần mềm. Englewood nằm trên các vách đá, Xin đừng hại tôi
Hall PTR NJ:, năm 1995. Là phát triển phần mềm kiểm soát nhiều hơn bằng lý thuyết hay bằng
cách thực hiện? Nó chủ yếu là cre- ative hay là chủ yếu được định trước? Những gì những
phẩm chất tri thức một phần mềm devel- oper cần? Cuốn sách này có chứa một sự thú vị thảo
luận về bản chất của sự phát triển phần mềm với một nhấn mạnh đặc biệt vào thiết kế.
Petroski, Henry. Mô hình: Lịch sử riêng trường hợp thiết kế những lỗi sai, và phán quyết trong
kỹ thuật.
Cambridge: Đại học Cambridge báo chí, năm 1994. Cuốn sách này vẽ nặng nề từ khu vực dân
kỹ thuật (đặc biệt là thiết kế cây cầu) để giải thích chính của nó thành công lý lẽ là thiết kế ít
nhất cũng phải phụ thuộc nhiều vào việc học từ những thất bại trước đây như từ những thành
công trong quá khứ.

122 Chương 5: Thiết kế trong

IEEE Std 1016-1998 Tiêu Chuẩn xây dựng, được khuyến nghị sử dụng cho thiết kế phần mềm
mô tả tập luyện. Những tư liệu được dàn dựng- ment này chứa các IEEE-ANSI standard for-mô
tả thiết kế phần mềm. Nó miêu tả nên được bao gồm trong thiết kế phần mềm tài liệu.
IEEE Std 1471-2000. Luyện tập được khuyến nghị sử dụng cho mô tả của kiến trúc Inten- sive
phần mềm hệ thống. Los Alamitos, CA: Máy tính xã hội bấm. IEEE Tài liệu này là IEEE-ANSI
cẩm nang cho việc tạo ra kiến trúc chi tiết kĩ thuật.
cc2e.com/0527 phần mềm: Thiết kế trong xây dựng danh mục
các hoạt động thiết kế
có bạn iterated ❑, chọn người giỏi nhất của một vài lần hơn là nỗ lực đầu tiên?
❑ CÜ ❑ Kháng J bừa bãi cô không thử một hệ thống trong nhiều cách khác nhau để thấy cách
mà sẽ làm việc tốt nhất?
❑ CÜ ❑ Kháng J có anh tiếp cận các vấn đề thiết kế cả từ trên xuống và từ dưới lên?
❑ CÜ ❑ Kháng J có bạn mạo hiểm hoặc không quen thuộc bộ phận chế tạo của hệ thống, sự
tạo ra sự tuyệt đối số tiền tối thiểu mã throwaway cần thiết để trả lời những câu hỏi cụ thể?
❑ CÜ ❑ Kháng J đã thiết kế của bạn được xem xét, chính thức hay chính thức, bởi những
người khác?
❑ CÜ ❑ Kháng J có bạn lái thiết kế đến điểm mà việc triển khai của nó có vẻ rõ ràng?
❑ CÜ ❑ Kháng J có bạn đã bắt được thiết kế của bạn, sử dụng kỹ thuật thích hợp như một
Wiki, email, lật sơ đồ, ảnh số, bộ sưu tập umlstencils CRC, bài, hoặc bình luận trong đoạn mã
chính mình?

❑ CÜ ❑ Kháng thì mục tiêu thiết kế thiết kế đủ được những vấn đề mà đã được xác định và bị
hoãn lại ở mức độ của kiến trúc?
❑ CÜ ❑ Kháng J là thiết kế stratified thành các lớp?
❑ CÜ ❑ Kháng J Anh hài lòng với một cách chương trình đã được thấy xác chết lơ lửng trên
hệ thống con vào gói,, và các lớp?
❑ CÜ ❑ Kháng J Anh hài lòng với một cách những môn đã thấy xác chết lơ lửng trên vào lề
thói hàng ngày?
❑ CÜ ❑ Kháng J là các lớp học được thiết kế cho tối thiểu sự tương tác với nhau?

Điểm then chốt 123


là các lớp học, và hệ thống con ❑ thiết kế để bạn có thể sử dụng chúng trong hệ thống khác?
❑ CÜ ❑ Kháng J sẽ chương trình dễ dàng để duy trì?
❑ CÜ ❑ Kháng J là thiết kế cúi gập người xuống? Tất cả đều là thành phần của nó hoàn toàn
cần thiết không?
❑ CÜ ❑ Kháng J nó có còn sử dụng các kỹ thuật chuẩn thiết kế và tránh lạ, khó để dưới- đứng
nguyên tố?
❑ CÜ ❑ Kháng J nhìn chung, cũng không có giúp giảm thiểu tình cờ cả thiết kế và rất cần thiết
sự phức tạp?
Điểm then chốt
■ chính của phần mềm mệnh lệnh kỹ thuật quản lý sự phức tạp. Đây là một cách đáng kể hỗ
trợ của thiết kế một tập trung vào sự đơn giản.
■ sự đơn giản là đạt được trong 2 tướng cách: giảm thiểu lượng thiết yếu của sự phức tạp của
bộ não của bất cứ ai cũng phải đương đầu với ở bất cứ thời điểm nào, và giữ cho sự phức tạp
ngẫu nhiên từ tăng nhanh về số lượng trì.
■ thiết kế là dựa trên kinh nghiệm đó thì chuyện. Ít có điều kiện Dogmatic bất kỳ một phương
pháp tính toán đau cre- ativity và các chương trình của bạn đau.
■ thiết kế tốt là lặp đi lặp lại những khả năng thiết kế; họ càng bạn thử, các bạn thiết kế cuối
cùng tốt hơn sẽ được.
Thông tin đang trốn là một ■ đặc biệt là khái niệm có giá trị. Hỏi "Tôi phải che dấu?" sẽ giải
quyết được vấn đề khó khăn nhiều vấn đề thiết kế.
■ Nhiều hữu ích, thông tin thú vị vào thiết kế là sẵn sàng bên ngoài quyển sách này.
Những quan điểm được trình bày ở đây chỉ là phần nổi của tảng băng.

Z02tôi619670.Trang 885 ngày thứ Tư, fm Ma thứ tư, 12, năm 2004 12:12:23 chiều 23 chiều
(khai báo con trỏ chỉ số biểu tượng), 332, trừu tượng lợi thì 340129(-130 334-335, 763 trừu
tượng, mức độ, 341-342 dữ liệu trôi qua, bỏ sự, & Con trỏ biểu tượng tham chiếu (), 332
lợi của, 339-340 128 - (hai dấu ngoặc nhọn (biểu tượng), 328 con trỏ barricaded biến số lợi ích,
339 hiệu suất cải tiến với quy tắc 80/20, 592 đơn vị ở trung tâm kiểm soát, từ, 339 128, 340
mục đích của việc tạo ra, 126 g_ prefix\ bản hướng dẫn, 340 thực thể trong thế giới thực, làm
việc với một thông tin đang trốn, lợi ích, 340 128-129(viết tắt của tên, 283-285 thiếu sự hỗ trợ
cho, vượt qua đại diện, câu hỏi, 130 loại dữ liệu trừu tượng. Thấy ADTs 340-342 mục đơn giản
như, 131, 104 mẫu nhà máy trừu tượng khoá, 341 về lợi ích mã, 128 parallelism trừu tượng từ,
342 lẹ làng, 58, số 658 phát triển tiếp cận duy trì thói quen, 340-342 đòi hỏi, 340 đại số nhân
dạng, ADTs 39 334 587 cho. Thấy ADTs vấn đề tình cờ, 77-78 các thuật toán khoá không khí
phép loại suy, 136 accreting 1 hệ thống ẩn dụ, 15-16 bình luận, 809, 157 độ chính xác, luận
điểm 464 heuristics so với các lớp học, 12, 152, 157 cho Adalanguage ẩn dụ như, 11-phục vụ
12 gắn bó về với sao 138 mô tả về tài nguyên, 63 tuổi, 607 trên sự phức tạp, để xử lý các tham
số 839, trật tự, 174-lề thói hàng ngày, lập kế hoạch cho 175, 223 kiên định mức độ thích ứng,
464 lớp răng cưa, các giao diện 311-316, 135-136 Mo Mớiname mô hình này, phát triển các kỹ
năng phân tích 104, 823 được định nghĩa, ngoài ra, nguy hiểm của 89, 295 tiếp cận để phát
triển sự xói mòn dưới ADTs sửa đổi (kiểu dữ liệu trừu tượng) lẹ làng, 58, phát triển số 658 vấn
đề sao 138 trừu tượng, với 130 cách tiếp cận từ dưới lên, 112-113, đánh giá, truy cập lề thói
hàng ngày, 339 135-342 698 697-tinh xảo mục tiêu, 136-nước trong 137 lợi ích của, 126-
129(cực đoan, 58, hình thành lập trình luôn luôn, 89-90 mà đặt vào bên cạnh không thay đổi
Lợi ích higher education-472, 482, 708, 856, ví dụ điển hình cho giao diện lớp, 128 quan trọng
của 839, 841 133--đối chứng tại 134 dựa trên, 133 các lớp học cách tiếp cận lặp đi lặp lại. Thấy
trong các nguyên tắc hướng dẫn để tạo ra accelerated innovation) hạng ví dụ, hệ thống làm
lạnh129(-giao diện, phát triển 130 135-dữ liệu, ý nghĩa của sao 138, 126 vấn đề tối ưu hóa cỗ
sinh non, vấn đề cao cấp về mặt, được định nghĩa miền, 126 840 847 lợi ích tài liệu hướng dẫn,
quản lý chất lượng, 840 128. Xem cũng được bộc lộ rõ ràng, instancing cấu trúc thực thi, 132
phần mềm chất lượng ở mức độ thấp, 846 tập tin như, 130 tài nguyên, 58-cho 59 135-mâu
thuẫn 136, chỉ dẫn lên tới hơn 138 130 131 phương pháp nối tiếpstencils, 35-36 giao diện, mục
tiêu cho, 133-trốn thông tin với, sao 138 127, 839 các quá trình đội-mức 845 840, 847-
instancing, 132 từ trên xuống đến gần, 111-113, bao hàm, cặp, nước trong 137, 132 694
instancing hạng ngầm-mức 846 696 OS, giao diện, làm ra nhiều kiến trúc mẫu cho, 103 thu
thập được thông tin, 128, 45 định nghĩa khối xây dựng đặt mục trong di sản của cháu, cây cối ở
mức độ thấp kiểu dữ liệu như, 130, 46 đã phát hiện được 146 kinh doanh độc lập với phương
tiện truyền thông, 131 mua tòa nhà, so với các thành phần ví dụ cho các giao diện lớp nghèo,
Đa thể hiện, việc xử lý, 51 đối chứng tại 134 135 131-133-thay đổi, 44, 52 vấn đề về miền, ở
mức độ thấp, cần cho, ví dụ về, 126-danh mục cho, 54 127-55 846 phi vật thể nghiêng về ngôn
ngữ Hạng thiết kế, 46-ngôn ngữ lập trình cấp, 846, 131-133 với bộ phận trách nhiệm trì hoãn,
duy trì thói quen 52 chiến lược, 164 đối tượng dạng, 130 tính toàn vẹn của khái niệm, 52 tuổi ‫٭‬
biểu tượng và con số truy cập vào các hoạt động lề thói hàng ngày, chiếc bàn của ví dụ,
885
Z02tôi619670.Trang 886 thủy thứ tư, fm Ma thứ tư, 12, năm 2004 12:23 PM 12:23 PM
886 thủy cấp trên. Mục đầu tiên các biểu hiện số học
kiến trúc, tiếp tục hiệu suất tinh chỉnh, 593-594, Liskov ảnh đó nguyên tắc, thiết kế, 46 603 dữ
liệu-lòng dời lại 144-145 được định nghĩa, refactoring 43, 572, so với overridable overridable
phi lỗi chế biến, 49 50 này chỉ tới, làm giảm thiểu, 626-627 trong thói quen hàng ngày, 145-lỗi
phát hiện được 146 sự khoan dung, 50 quan trọng lắm cho ngữ nghĩa, 280-281, 143 GUIs dữ
liệu được bảo vệ, 47 xét nghiệm trọng yếu cho những vòng lặp, tù nhân thứ 621. 623-lề thói
hàng ngày bị đè bằng tay để làm quan trọng của, 44 quy cách truy cập nối tiếpstencils, 310
không có gì, phát hiện được 146-nhập/xuất 147, 49 ngôn ngữ lắp ráp các lớp học đơn từ, nhân
tiện phát hiện được 146 lên kế hoạch, 48 mô tả về cơ bản, 63 tuổi, 65. Xem cũng Visual Basic
khả năng thao tác với nhau, 48, 720 cơ sở công cụ niêm yết thử nghiệm, có cấu trúc, 503, điểm
mấu chốt cho, 60 recoding để tới 640-có khoảng 642, 505-có vụ nổ súng tại số 509 Phố 48
những khẳng định lên kế hoạch, hattrick BCD (Mã hóa Nhị phân loại máy, khoã¡ độc lập, 53
chương trình khuyến nghị nên hủy bỏ, 297, 206 BDUF overengineering 51 (thiết kế lớn lên đầu
tiên), hoạt động 119% tổng, bởi kích cỡ của các biện luận cho, vẻ đẹp, Maryland... bên cạnh là
quán ăn 80, 654 dự án 655-giả định để kiểm tra, danh sách, 190 bắt đầu kết thúc từng cặp,
742--hiệu suất, 48 743 mục tiêu vững các chướng ngại vật, mối liên hệ với 205, 858
bibliographies, phần mềm, hướng, 590 hiệu suất lợi ích của Maryland... bên cạnh là quán ăn, to
big bang hợp nhất, 691 prerequisite bản chất của tòa nhà 44 của chính mình, thiết kế lớn lên
phía trước cơ chế (119 BDUF), tổ chức chương trình, 45-46 cho, 191 tìm kiếm, chất lượng 428
hệ nhị phân, 52-53, 55 C++ ví dụ, 191 quản lý tài nguyên ràng buộc, 47 nguy hiểm Ví dụ, sử
dụng 192, 252 trong mã nguồn tài nguyên trên các nước đang phát triển, 57 được định nghĩa,
Maryland... bên cạnh là quán ăn tự biên dịch thời gian, 252-253 tái sử dụng quyết định, 52
dependencies, kiểm tra, 350 dựa trên kinh nghiệm đó thì chuyện với, 107 thiết kế các khu vực
nguy hiểm, nhận dạng, 53 việc xử lý với lỗi, 191, 194 193-chỉ trong một thời gian, 253 khả năng
mở rộng, 48 mã sẽ Ä'AE°á"£c trong, 191-192 điểm mấu chốt, 258 thiết kế, 47 hướng dẫn an
ninh cho, 191 193-thời gian nạp, 253 tính khả thi, kỹ thuật ví dụ của Java 51, 190, 253 lần thời
gian chạy cho phép, 56 postcondition c¶p sú x¥c minh, biến số khác, thời gian của, 252-254
thiết kế giao diện người dùng, 47 192 193-hộp đen thử nghiệm, 500 há"£p lá"‡ Hã³a thiết
kế, 50 điều kiện tiên quyết verification, đường trống cho, với 747-748 định dạng, các biểu hiện
đại số 192-Máy lẻ 765 đây 766 193-gây hiểu nhầm ví dụ, xóa bỏ vụ này còn từ 190 dãy nhà
733 mã nguồn tài nguyên cho, dụng cụ chỉnh hình viết quy tắc, 212 443, rất khác biệt, đã đánh
giá trận 295 Ví dụ, Visual Basic 192 194-kiến lên, 795 796-nhân, nhiệm vụ thay đổi để phát biểu
này, 249, 758 tới 443 conditionals, đã làm rõ, 623-624 ngoài ra, tác giả đóng vai trò gì trong
chậm lại, được định nghĩa, chip 486 443 làm tròn gặp lỗi, tự động_ptrs 297, 333 Locust đã mô
phỏng phong cách bố trí tinh khiết, chỉ kiểm soát tới thử nghiệm, phòng 528 529 740-743-C
ngôn ngữ cho, 311 loài thuần chủng vĩ mô, phong cách bố trí, 738, 317 740-danh mục báo cáo
đơn, 749 748-hộp đựng như là một giải pháp thay thế, 310 cuốn sách mô hình, 812 B-chi phí
hoạt động 813, 602, 669, kế hoạch dự phòng 670 bun biểu hiện xuyên nói, 311 dữ liệu, xét
nghiệm xấu, phòng số 514 đấy-độ sâu 515 0, sự so sánh với 441-442, được định nghĩa, 310
vững các chướng ngại vật 0s và 1s như giá trị, 432 các chiều không gian khác, làm giảm thiểu,
lời khẳng định cuồng nhịêt, mối liên hệ với 205, đột nhập vào các xét nghiệm, 433 625 1991-
626, 204 cấp lớp C cú pháp, 442 ngôn ngữ-443 điểm cuối, kiểm tra, 310 204 conversions dữ
liệu nhập, các nhân vật, Sự so sánh với 0, foreach vòng lặp, giao diện như ranh giới, 372 203
441, chỉ số của 310-311 phòng mổ phép loại suy, danh mục cho là 459 $ 204, bố trí của này chỉ
tới 754, mục đích của, 203 trong so sánh những vòng lặp, hằng số với, 387-
DEPARTMENTOFSOCIALSERVICES PUB 388 442-443 các lớp học cơ bản, 310 trừu tượng
overridable đa chiều do lề thói hàng ngày, 145 bàn quyết định, di chuyển, nêu rõ in cho 435,
280-281 trừu tượng khía cạnh của, 89 DeMorgan khắc khe, ứng dụng, là sự kết nối, quá chặt,
143 437 436-

Z02tôi619670.887 trang hôm thứ Tư, fm Ma thứ tư, 12, năm 2004 12:23 PM 12:23 PM
đặc tính, cuối cùng từ trên mức độ cá nhân 887 mục
đánh giá các nguyên tắc hướng dẫn, vào lúc 8h 438-dán nhãn, 381 tác dụng phụ, 761 759-
chức năng, di chuyển, 434-435 trong một vòng lặp nhiều, 380 các tập tin nguồn bố trí, trong,
hãng dịch vụ cho 773, 431 433-lồng nhau-đơn giản với, nếu bộ nhớ đệm, mã điều chỉnh với
628, 629-nếu phát biểu này, tùy tiện Trong 446, 447-mô hình chín chắn khả năng (Cờ CMM),
435 436-trong khi vòng lặp, số 379 đã vào hạng ngầm, 433 491 so sánh cầu thất bại, cụ thể
hơn, 74 định đến Tacoma lưu giữ những việc thiết kế, 117-1 1 8 cú pháp, 439 Java, 443 mẫu
cây cầu, 104 quy tắc cơ bản của sự tiến hóa, theo các chỉ dẫn bố trí phần mềm, 750 749-si-lực
gỡ lỗi, 549 565-lô-gic #548 nhân dạng, 39 334 587, 196 Tràn qua FIFO đệm hã sç (máy tính đã
giúp đỡ tùy tiện trong phần mềm-, 435 437-sâu bọ. Gặp gỡ lỗi; dị tật bẩm sinh trong mã kỹ
thuật), các công cụ; 710 structuring thểname, vào lúc 8h-441 trường hợp c¥c léi khai lỗi dấu
ngoặc trong việc làm rõ, xây dựng công cụ, 716-717. Xem cũng đặt mua 361, 437 alpha-quá
tường tận đến nổi danh mục, 365 438 chiêu, sự so sánh với, 441 tòa nhà phép ẩn dụ, 16- 19,
206 mẫu tích cực gỡ lỗi khuyến cáo, xây dựng, so với các thành phần, 18 mặc định mua điều
khoản 363, 435 437-đã xây dựng, hàng ngày. Thấy hằng ngày xây dựng và throughs thả xuống
363, 365, 572 refactoring-xét nghiệm khói kết thúc của báo cáo, 363 trường hợp-365 mạch điện
ngắn đánh giá, 438-kinh doanh. bố trí endline vào lúc 8h, 751, 433 752-simplifying-kiến trúc
điều căn bản đó, 435 46 phát hiện trong, 363 lỗi biến số liên. Thấy bun thay đổi, nhận dạng các
biến số lĩnh vực, tần số 98 thi hành án ra lệnh cho, 0, sự so sánh với, 441 442-các hoạt động
tốt bàn cho 31-32 361, 612, 613-bun chức năng thiết kế hệ thống con, 85 nếu phát biểu này,
tạo ra từ biểu cảm so sánh, mua thành phần, 18, 51, 614 với 434-435, 366 điểm then chốt nếu
phát biểu này, được dùng trong 359, ngôn ngữ, 361 hỗ trợ cho các xét nghiệm bun C lồng nhau
nếu, đang chuyển đổi từ, đột nhập vào các xét nghiệm, 433 phần C 448-449 ngôn ngữ, trốn với
thói quen hàng ngày 451, 165, 131 bình thường ADTs với trường hợp quy tắc đầu tiên, 361,
301 302 simplifying-cú pháp biểu thức luận lý, đặt mua, 361 thểname 0, sự so sánh với, 441
443 442 442--ra lệnh cho trường hợp, 361 biến lôgíc mô tả về, 64 để sửa đổi, 566 song song
0s và 1s như giá trị, nêu rõ in cho 432, 275, 278 kẻ lừa gạt biến số 362 361-C, tạo ra kiểu dữ
liệu, 302-303, 334-chiêu rất thích hợp để polymorphism 335, 317, luận điểm dữ liệu chuỗi các
loại, 299 301, 147 317--tài liệu hướng dẫn với, 301 148 chỉ số chuỗi gặp lỗi, 299-300 tái thiết
kế, 453 loại như sự thay thế được đánh sốstyle name, C# refactoring 64, 566, 573, 304 C++
quy cách hành động đơn giản, các biểu hiện 361 với. Xem ra khẳng định ví dụ, 191 bun bàn
điều khiển theo phương pháp sử dụng, sự thể hiện cú pháp biểu thức luận lý, 421-hãng dịch vụ
cho, 431 422-433 443 442-thay đổi kiểm soát. Cấu hình thấy nêu rõ, tới khi vượt qua mức kỷ
lục 268-Cuống Phiếu với, gỡ lỗi năm 269 208-209 simplifying quản lý xét nghiệm với 301-302,
mô tả về tính cách, 64 trụ, 299-300. Còn thấy những con số không và giá trị như, 432
DoNothing () macros, 444-chuỗi 445 loại dữ liệu sẵn sàng thử nghiệm điều căn bản đó sếp,
những ngoại lệ trong, 198-199 loại dữ liệu nhân vật 30-31 mục lề thói hàng ngày, bao gồm 184-
chỉ kiểm soát chuỗi chiêu, so với 185, 299 cách tiếp cận từ dưới lên để thiết kế giao diện, loại,
được nâng lên 139-sang phải 1-4-1 C ngôn ngữ, 299-301 112-113 khuyến cáo, bố trí tương
đương $ 745, 298 bộ ký tự tích hợp từ dưới lên, 698 697-thói quen hàng ngày vĩ mô, 182-danh
mục, bao gồm 184 316 bé ở-Kết giới phân tích, 513 317-f in cho phòng số 514 đấy, 275 277-
chiến lược, chuyển đổi 299 lẽ phát biểu này, dụng cụ chỉnh hình 444-445 (nghĩa đen) nhân vật
ảo thuật, bố trí khối với 740, 743-biến đó, bằng cách tham khảo, so với 297-phong cách 298
bằng cách so sánh, giá trị 734, 333 Locust Unicode 298, 299, phá vỡ c¥c léi khai chiêu, cho
325, 334, 763 328-tính cách cá nhân, C++ những vòng lặp, kháng Work Registration-
preprocessors 372, ngoài các kỹ năng phân tích gỡ lỗi, cảnh giác với 381, 823, 207 mã-208,
828 hướng dẫn các kỹ năng giao tiếp, Số 379 đã vào-tài nguyên cho, 159 380

Z02tôi619670.Trang 800 ngày thứ Tư, fm Ma thứ tư, 12, năm 2004 12:23 PM 12:23 PM
800 mục cấp trên đầu tiên
tính cách cá nhân, danh sách kiểm tra, tiếp tục xây dựng và xét nghiệm khói hàng ngày, 707,
577 liên đoàn hai chiều thông điệp, điều trị bá"™ biãªn dá"‹ch, tổ chức dữ liệu, gọi
780, 575, 826 refactoring-ăn kiêng kiểu dữ liệu, 316 bé ở 318 trường hợp c¥c léi khai-di sản, so
với máy tính,-khoa học vừa mới tốt nghiệp, 829 gỡ lỗi, Mau ra tuyến 559... và dứng-147 thì...
561 hồ sơ được chấp thuận-148, 828 kỹ năng hợp tác dị tật bẩm sinh, 489, Mau ra tuyến 559...
và dứng-560 centralizing kiểm soát với sự sáng tạo, là điều 153, 829, 857... lập trình phòng thủ,
211:-212 thay đổi, giới hạn tác động của, sự tò mò là điều 153, 822-bán kính 825 thiết kế, 122
123, 781-danh sách kiểm tra, 157-thật ra 158, 774, 780 quá trình phát triển tri thức, tài liệu
hướng dẫn, 780 781-và mã hóa lề thói hàng ngày từ 822 816 817-pseudocode, 225-229, 829
encapsulation kỷ luật, thật ra 158 gắn bó về chỉ số refactoring như bao quát trong quá trình
soạn thảo thông, ăn kiêng,-828 loại được đánh sốstyle name, 317 566, 831-832 trải nghiệm
sửa dị tật bẩm sinh, 560 Vấn đề về sự phức tạp, 152-thí nghiệm là điều 153, 823 822-chậm lại,
489 chính thức, 491-giá trị hằng số đã vượt qua 492 trở lại, 574 832 gonzo lập trình, đang định
dạng, 773-774, 151-constructors 152, 833-834 thói quen tá"›i phát biểu này, 410, 143-
144 bình khí nén sự khiêm nhường, 821, 826, 834 nếu lời nói, sự kết nối 365 loại, quan trọng
của 819, 820-di sản của cháu, thật ra 158 100-102, 142-trí tuệ lòng trung thực, 826 143 828-sơ
khởi, dữ liệu miễn phí 257, 155, 821 tình báo hợp nhất, 707 147, cây cối di sản sâu phán xét
848, 579, được định nghĩa một giao diện 125 điểm then chốt, bố trí 835, 773-phái đoàn di sản,
so với 774, 830 lười biếng, danh sách, xxix-xxx refactoring 576, sai lầm, thừa nhận 826, những
vòng lặp, DEPARTMENTOFSOCIALSERVICES PUB 388-389, chỉ số refactoring con cháu kiên
trì, 831 tên, 288-89 CLERK, 780, 567 cho hoạt động này chỉ bù đắp đôi lập trình, thiết kế, 86
484, 216, 220-225, sự yếu đuối, tham số 821 thứ 233, 185 disallowing chức năng và giải quyết
các vấn đề hiệu suất 823, tinh chỉnh, 607 608-người điều khiển, 150 phát triển, chuyên nghiệp
chiêu, 344 ghi nhận, 780, 810 có 824-điều căn bản đó, 59 encapsulation bán kính 825, được
nâng lên 139-143, thật ra 158, 824 pseudocoding đọc, thứ 233-phần mở rộng, số 234, 576
refactoring với, tôn giáo trong lập trình, công cụ lập trình, 724 có hại 725-như giải, lợi ích của,
ảnh hưởng của 851 154, 853-đảm bảo chất lượng, 42-43, 70, 476 tập tin chứa, 771-tài nguyên
trên 834, 772 835-refactoring, 570 577-579, 584, thói quen hàng ngày, refactoring ngoại giao
với tình trạng, báo cáo, các điều kiện ăn kiêng., 40, 42-43 576 dự án thành công, chúng ta học
từ, thói quen hàng ngày, 185, 774, 780 hợp đồng cho 823 formalizing-tốc độ 824, điều chỉnh
cho, có khoảng 642-643, 106 danh sách kiểm tra c¥c léi khai giao diện, 774 đang định dạng,
768-trừu tượng, 157 771 dòng thẳng, 353 người bạn, mã encapsulation vi phạm kiến trúc, 54-
55 sợi dây, 316 bé ở-317 đáng lo ngại, sang phải 1-4-1, cấu trúc 317, chỉ kiểm soát 343 chức
năng ở. Thấy chức năng hơn, phương án 670 phương pháp định hướng bàn, trong đó có 429
lề thói hàng ngày, là 459 $ thử nghiệm các biểu hiện luận lý, 503, số 532 dữ liệu toàn cầu, lẩn
trốn, là điều 153 trường hợp phát biểu này, công cụ 365, 70 các lớp học, 155 nhân vật chúa
kiểu dữ liệu, 316 bé ở-317, 318 tạo kiểu phương pháp hack, thứ 233, 157 lớp-thật ra 158, thứ
233-, số 234, biến số 257-258, 288-89 CLERK, trốn chi tiết, 578 thực thi-579, 774, 780 344 343-
là điều 153 mã hóa thầy, 69 dependencies hình tròn, 95 danh mục thực thi, thật ra 158 tinh
chỉnh, 607 mã-608, 642 ca-643 lớp gọi gián tiếp các lớp học khác, 150 bình luận, 774, 816 817-
trừu tượng loại dữ liệu. Thấy thông tin ADTs lẩn trốn, 92-93 điều kiện phát biểu này, các vật thể
trừu tượng, mô hình hoá 365, 152, 144 di sản-149 lên, thật ra 158 quản lý cấu hình, danh mục,
157 trừu tượng khởi tạo thành viên, 243 669-670 vệ sinh phụ nữ để, mất đến 232-PPP thứ 233,
691, 694 tích hợp, 697, 317 kiến trúc hằng số điều căn bản đó, 46 không liên quan, 155 các
hoạt động xây dựng các lớp học, 69-70 người dùng những giả định về, sang phải 1-4-1 là một
mối quan hệ, kiểm soát, là 459 $ 144 cấu trúc, 773, 780 căn cứ. Thấy các lớp học căn cứ điểm
then chốt cho, 160,

Z02tôi619670, số 234.fm 889 trang hôm thứ Tư, thưa bà, 12 ngày thứ Tư, năm 2004 12:23 PM
12:23 PM
mục cấp hàng đầu cuối cùng điều chỉnh 889 mã
ngôn ngữ-vấn đề cụ thể, 156 superclasses cho các bệnh thông thường, inefficiency mã nguồn,
598, 601-bố trí của, 768 771 575-Đang sở khởi tại biên dịch thời gian, giới hạn hợp tác, 150 thử
phát triển đầu tiên, thứ 233 633 632-Liskov ảnh đó nguyên tắc, thử nghiệm với các vật thể dập
tắt, 523 lề thói hàng ngày, 639 trực tiếp tới 640 144--145 một chiều, 577 liên đoàn kết
nhập/xuất, 598-biến số thành viên, thì việc có 599, 273, tầm nhìn của 93 integers, rất thích bay
đi, 625 279 những dấu hiệu cảnh báo cho, 848, 849, so với phương pháp biên dịch hiểu thấu
đáo. Thấy lớp-phân cấp máy phát điện lề thói hàng ngày, 713 ngôn ngữ, 592, 600 601-làm
giảm thiểu quy tắc, khả năng truy cập được nâng lên 139 Plan Comment bước, PPP, mất đến
232 accelerated innovation), 608, 850, 149 lên cleanroom mixins phát triển, 521 kẹp những
vòng lặp, 617 618-mô hình đối tượng trong thế giới thực, 152 Cờ CMM (Mô hình chín chắn),
khả năng điểm then chốt, 608, 645 nhiều mỗi tập tin, bố trí của ngôn ngữ - rõ ràng, 491, 769-
770 rất tốt. Tập đoàn Cobol, 64 đánh giá, 615-lười biếng 616, 277, 278 f bảo hiểm mã thử
nghiệm ở 506 dòng lệnh, làm giảm thiểu số thành viên, số 143 mã thư viện, 222, 717, 593 của-
594 số lề thói hàng ngày, chất lượng phân tích công cụ mã 150, 713-714 chỉ dẫn vật thể thao
túng logic tên, từ, mã đọc thành thạo phương pháp, 494 610-616 272 273-mã điều chỉnh tra
bàn ghế cho 614, 615, 635-đối tượng, với 86 80/20 contrasted, quy tắc, những vòng lặp, 616
592-overformatting 624, 770, 591 lợi ích khác từ Ngôn ngữ ở mức độ thấp, recoding để, tràn
qua lề thói hàng ngày, 145-phát hiện được 146, 156 đại số nhân dạng, 39 334 587 tới 640-có
khoảng 642, 155-157 gói hút, 591-đo để tìm ra vị trí của 592 điểm nóng, song song sửa đổi
refactoring trụ, 593 594, 603--lòng dời lại, 603-lòng dời lại, chỉ số 566, 625 rất tốt.-627 trong trí
nhớ, so với các hoạt động tập tin, chương trình lập kế hoạch cho gia đình, hợp ngữlanguage,
công cụ, 720 598 việc liệt kê-154 là 599 $ recoding, để, hợp ngữlanguage 640-có khoảng 642
giảm thiểu phải làm việc trong những vòng lặp, được bảo vệ, so với dữ liệu riêng tư, 148, 594
620 nhận diện cổ chai-tù nhân thứ 621, tuyên bố rằng các thành viên như tư nhân, dữ liệu, 628
bộ nhớ đệm-629 nhân, thay đổi để 150, 607 danh sách kiểm tra-608, 642 ca-ngoài ra, 623 643-
thủ tục 624 trong. Lề thói hàng ngày so sánh các cấu trúc logic thấy 614, trật tự, 623 vòng lặp
lồng nhau được bảo vệ dữ liệu, 148 các mục tiêu cạnh tranh tình thế khó xử, mấy câu chuyện
cũ, 596 593-pseudocode trong việc thiết kế, hệ điều hành Federal 595 loại, mất đến 232-
bá"™ biãªn dá"‹ch loại, 590, số 234, 590 thành viên công cộng, được nâng lên 139,
sang phải 1-4-1, 576 597 596-tốc độ thao tác, thời gian đọc kỹ luật tiện, sang phải 1-4-1 đang
chuyển đổi loại dữ liệu, 635, 594 với lý do là về việc tạo ra, 152-sự đúng đắn về 156, quan
trọng của các hoạt động, chi phí, thông thường, refactoring, 155, 576, 574-Federal 595 603 596
601--579, 582 578-dữ liệu sự chuyển hóa, 629 624-tối ưu hóa khi bạn đi, 594-Federal 595 tài
nguyên, 159 kiểu dữ liệu lựa chọn, 635 tổng quát về, 643-reusability rất tốt. lợi ích của 154, lập
chỉ mục cơ sở dữ liệu, chúng tôi đặt cái máy nghe lén, có 599 601 hoạt động duyệt và kiểm tra
bước, 217 dị tật bẩm sinh trong mã, 601 Pareto nguyên tắc, thói quen 592 bước, xây dựng
được định nghĩa, 591 217 precomputing kết quả, 635 638-lề thói hàng ngày trong. Thấy ví dụ,
DES 605 lề thói hàng ngày 606-phương diện về thói quen hàng ngày, không dùng, phát hiện
được 146, 147, 576-ô xem thiết kế, 590 589 589-vi phạm về ngữ nghĩa của, 591 refactoring
thiệt thòi, so với 609, encapsulation, sang phải 1-4-1-142 tháo rời xuất sắc, 720, 590 mục tiêu
tài nguyên đặt () lề thói hàng ngày, không cần thiết, 576 hành hình công cụ cvs
frontendcomment, 720 tài nguyên, 606-607, 645-tương tự như tiểu rất tốt. và, các biểu hiện 576
superclasses 39 334 587-639, đúng sự dịch chuyển, ví dụ, 634 đơn tính năng đã phát hiện
được 146 cụ thể, thói quen hàng ngày, 590 Federal 595, 639-singleton, thực thi những tài sản
640, 151 tần số, thử nghiệm theo thứ tự, xét nghiệm trọng yếu cho những vòng lặp, tù nhân thứ
621. 623-bước để tạo ra 216-217 612, 613-mạch ngắn đánh giá, 610 nhờ dòng nước đi ngang
qua, thì thường xuyên sử dụng tham số điểm mã, tốc độ 592, quan trọng của Federal 595-596,
phần cứng là điều 153 loại, 591, 623 giảm sức mạnh-624, 165, 575 subclasses, cải tiến khả thi,
lập chỉ mục 632 605 39 334 587-dữ liệu, 627 trong 628-
Z02tôi619670.890 trang hôm thứ Tư, fm thưa Bà Hôm thứ tư, 12, năm 2004 12:23 PM:23 PM
890 12 đầu tiên từ trên mục cấp thế hệ mã pháp sư
và //, 790 784, 791 gọi hệ thống, có 599-600, 634 633-abbreviations trong, mục đích của, 782 là
799 $ công cụ, các thuật toán, 809 720 mã lặp đi lặp lại với, 786 sẽ quảng bá những thông
những vòng lặp, 618-620, 782 biện luận chống tài nguyên, Oceanic 815 unswitching những
vòng lặp, 616-617, 811 authorship lề thói hàng ngày với 805, 809, 817-sự thay đổi trong môi
trường cho mã, Bad, trên 568, tự mã, 796 bình luận của-797 594 đường trống xung quanh,
Máy lẻ 765 đây 766-hộp thoại Socratic về 781, 785 khi bắt sóng-, mô hình cho quyển sách, 596
812-tiêu chuẩn, IEEE, 813 813-814 thế hệ mã wizards 718 loại, 786-phong cách khác biệt, có
thể quản lý 788, 683 mã hóa. Xem cũng xây dựng; danh sách kiểm tra, 774, 816 817-vi phạm,
kiểu dáng 801 khái quát về xây dựng phần mềm các lớp học, 810 có mã, 787 tóm tắt của hội
nghị này. Thấy mã hóa hiệp định nghĩa vào, 802, 798 803-bất ngờ mã hóa các cấu trúc kiểm
soát, 804 805, 817-mã hóc búa, 798, 801 danh mục các hoạt động, 69 tuyên bố với, 794, 802,
803-tính năng không được diễn tả, 800 liên tiếp. Thấy dòng thẳng các biến số 816, 803 mã xây
dựng phần mềm như, 5 miêu tả về ý định mã, phiên bản kiểm soát, 811 787 phong cách.
Khoảng cách bố trí xem mã hóa sự định hướng, 806, so với nó như thế nào, tại sao 798 797-
gắn bó về sự hình thành, hiệu quả hơn 788-791, 800 giao diện, cách khắc phục sao 138
endline lớp bình luận, 793-795 chiến lược, 52 tuổi hoãn cam kết lề thói hàng ngày, thiết kế với,
khoảng 168-171 gặp lỗi, đánh dấu cách khắc phục, kỹ năng giao tiếp, quan trọng, 623 giảm sức
mạnh-624, 800, 828 của 39 334 587-632, 786 communicational gắn bó về giải thích, 169, 170
tập tin coincidental gắn bó về, 810 có 811-thông tin liên lạc, sự hợp tác phát triển lá cờ, mức
độ, đội 803 bit, 650, 494 đọc mã các biến số toàn cầu, 803, 809 so sánh lợi ích, 482 quyền sở
hữu tập thể chỉ dẫn thụt lề 764-boolean Máy lẻ 765 đây. Xem xét nghiệm so sánh các kĩ năng
bun, bàn với cá nhân, 792-795 điểm nổi sự bình đẳng, 295-296, 495-496 của dữ liệu nhập, 803,
808, 293 loại dữ liệu trộn chi phí lợi thế, 480 481-tích hợp vào sự phát triển, 791, 479, được
định nghĩa quá tường tận đến nổi các giao diện 480, tầng lớp, 810 có 1 sự ràng buộc trong suốt
compilation, giai đoạn, sinh nhật thứ 115 thiết kế giao diện, thói quen, 808 252-thời gian phát
triển 253 lợi thì 480, 807, Javadoclanguage Oceanic 815, 703 đã xây dựng con chó bị gãy-và-
con ngựa con cho thấy, 817 495 điểm then chốt, kiểu dữ liệu, 293 gia hạn vượt xa những cảnh
báo xây dựng, theo các chỉ dẫn bố trí, 766 763-gỡ lỗi, như công cụ, ăn kiêng. 483 557, 811, các
lỗi ai chú ý hợp pháp, tìm ra lề thói hàng ngày, phương pháp lập trình cực đoan, mô tả, 806 độ
dài thêm 230 231 482 độ ý định mã, 795 796-số thứ tự dòng, gỡ lỗi với, Chậm lại chính thức.
Thấy những vòng chính thức, 804 805 549-chậm lại dưỡng, 220, 788-791, thông điệp, điều trị,
549, Quy tắc tổng quát về phần mềm 794 826-ăn kiêng, thiếu tá, so với 481 Chất lượng rất nhẹ,
799-SAFE 800 nhiều thông điệp lỗi, 550 trong số đó chậm lại. Thấy dấu hiệu chính thức, 787 tối
ưu hóa bởi 596, 597-chậm lại mã không cần thiết thông tin, điều chỉnh điểm then chốt hiệu suất,
497 788 590 loại, cố vấn cho khía cạnh của, 482 mã dữ liệu, dự án 802-tiêu chuẩn cho, 557
rộng đôi lập trình. Thấy đôi mật độ tối ưu - điều kiện của, tốc độ tối ưu hóa cỗ từ 792, lập trình
bàn dữ liệu xuất, 808, 597 của mục đích của, 480 các đoạn văn mã hóa, những công cụ cho
716, chuẩn, 497, 795-IEEE 801, 816, 597 tối ưu hóa cỗ mã hóc búa thử nghiệm, so với 481,
tuyên bố, 806-tham số 807, 231 validators với đi-throughs đã vượt qua 492-493, phần của các
chương trình, 809, 293, 557 cảnh báo sưu tầm, hiệu suất 572 refactoring, loại, 791 ‫ ٭‬mã/ tinh
chỉnh, tiếp tục tập thể sở hữu, 482. Xem cũng quy tắc mã trước, 798, cộng tác proportionality
subexpression loạitrừ của 806 638, 639-bình luận. Xem tài liệu hướng dẫn pseudocode cũng có
sự ưng thuận từ, 220, tóm lược tiếp cận cho 606,

Z02tôi619670.891 trang hôm thứ Tư, fm Ma thứ tư, 12, năm 2004 12:23 PM 12:23 PM
xây dựng, lịch làm việc ước lượng cấp hàng đầu cuối cùng 891 mục
completeness của sự bình đẳng, các điều kiện trên, phân nhánh cao 355, 307 mục đích của
danh sách kiểm tra, ví dụ, xử lý lỗi 43 refactoring, 571 loại dữ liệu phức tạp. Thấy 356 357-mô
phỏng cấu trúc trong ngôn ngữ thiếu, sự phức tạp tần số, thử nghiệm theo thứ tự, trừu tượng
cho việc xử lý, lên đến 309 839 613 612-xây dựng. Còn thấy các lớp học về giảm phần mềm,
152 nếu phát biểu. Lời tuyên bố xem khái quát về xây dựng mã hóa in cho giảm thiểu, chìa
khóa, 366 điểm tính cộng tác. Thấy 839 cộng tác bàn xem dạng Cây, thay thế, quyết định.
Thấy kiểm soát cấu trúc xây dựng các khoản đóng góp cho, 614-615 9306456 - 9303425-là 459
$ lăp lại quyết định, có điều kiện. Thấy những vòng lặp hướng dẫn, 66 in cho việc quản lý,
trường hợp quy cách đầu tiên bình thường, quản lý. Quản lý 844-845 thấy 356-357 điểm quyết
định xây dựng, đếm, 458 đường dẫn quy cách đầu tiên, bình thường cao 355% tổng, theo kích
cỡ của hoạt động quan trọng của, lẽ nếu điều khoản 457, 357, 654 dự án 655-cô lập các lớp
học, cho, là điều 153 nếu-thì thường phát biểu này, cao 355 357-điều căn bản đó. Thấy điều
căn bản đó, thời gian sống, là 459 $ refactoring, 573 ngược dòng management, 77-79, 844-
ngắn đánh giá 845 mạch điện, 610 chất lượng. Thấy chất lượng McCabe phần mềm là thước
đo, 457 458-chuyển lời tuyên bố. Xem tài nguyên, 856 trường hợp đối tượng tâm thần được tổ
chức, thước đo, lời nói, lịch làm việc ước lượng. Gặp gỡ lỗi chào đón, 547 457-#548 công trình
xây dựng các phương pháp, lịch làm việc cho việc xử lý, 839 837-quản lý cấu hình ước lượng
bỏ sự mục tiêu, 80 tràn trề năng kích thước của kiến trúc dự án, những tác động. Nhìn thấy các
khuôn mẫu kích cỡ, giảm thiểu với thay đổi, 52 tuổi, 103 dự án của vấn đề, làm việc ở miền,
845, 669, kế hoạch dự phòng 670 công cụ cho. Xem công cụ lập trình độ tin cậy mối tương
quan với, 457, 667, kiểm soát được các thay đổi quyết định xây dựng duy trì thói quen làm
giảm, 164 loại, 667 quan liêu danh mục ТРЕБУЕТСЯ ЛИ КРУПНОЕ СТРОИТЕЛЬСТВО kích
cỡ của các dự án, có hiệu lực vào danh mục, 669, 670, 69--70 657 656-thay đổi mã, 668 667-
mã hoá danh mục các hoạt động, 69 tuổi thọ, chi phí, tính toán, là 459 $ 666 sớm của môi
trường sóng, thành phần kiểm tra, từ 499 $ 67 được định nghĩa, chìa khóa điểm cho 664, 70
thành phần, mua, 18 tuổi, 51 thay đổi thiết kế, 666 667-ТРЕБУЕТСЯ ЛИ КРУПНОЕ
СТРОИТЕЛЬСТВО hỗn hợp bài tập này, mô hình này, 104 ước lượng chi phí, 666 chọn thay
đổi, 69-70 ranh giới, phòng số 514 đấy hợp chất nhóm các yêu cầu thay đổi, 666 công nghệ
trưởng thành, báo cáo hợp chất môi trường. Thấy dãy nhà thay đổi trọng lượng, cao 666 67
tính giá trị-2010 của việc nhận dạng các lĩnh vực của sự thay đổi, 97-99 hiệp định lập trình 66-
66 tên biến, Đã nhảy 263 lần-264 các cấu hình, lập trình máy vào ngôn ngữ, vết thương trên
máy tính thể tái chế ngày càng, 668 phần mềm 68-69 trường hợp () công cụ kỹ thuật, mục đích
của, 664 710-665 ngôn ngữ lập trình. Thấy điều kiện các điều kiện tuyên bố thay đổi, 41, 664,
sự lựa chọn ngôn ngữ lập trình bun hàm gọi với 359, 666 667-danh mục đảm bảo chất lượng,
70 South Korea@ item: inlistbox Longtitude direction được khuyến nghị sử dụng tài nguyên,
trên các biến số, 670 đồng đội, 69 301-danh mục SCM 665 302, công nghệ, việc xác định
trường hợp c¥c léi khai sóng. Thấy phiên bản công cụ kiểm soát trường hợp, 668 vị trí của các
anh trong 66-69 c¥c léi khai, phiên bản phần mềm kiểm soát, công cụ 668, 70 bị xích vô danh
mục nếu-thì-khác phát biểu này, Const Kaplinsky từ khóa, C++, thứ 177, 243, 176, xây dựng,
lịch làm việc ước lượng 358-360 274, 333 Locust tiếp cận tới, danh sách các danh mục 671,
365 hằng số bắt kịp, từ đằng sau, trường hợp quy cách đầu tiên, phổ biến, 317 675 danh mục-
676 359-360 quy tắc tính nhất quán, kiểm soát, so với ước tính lên đến 309, 675 so sánh hiệu
năng của 614, tuyên bố sử dụng dụng 308 trẻ em trong yếu tố ảnh hưởng đến sự, 674-675,
bao gồm tất cả các trường hợp, được định nghĩa, 307 360 độ chi tiết cho, 672 được định nghĩa,
mô phỏng cao 355 bởi các biến số toàn cầu, 338 nhiều kỹ thuật với loại bỏ dư thừa, đang khởi
động, thử nghiệm so sánh 243, 672 610 611-literals, tránh với, dụng 308 trẻ em trong-lên đến
309 mục đích này, việc thiết lập, điều khoản, 358 671 khác-F, 270, 360, 273, 277-279 675 lạc
quan,

Z02tôi619670.892 trang hôm thứ Tư, fm Ma thứ Tư, 12, 12:23 chiều 2004 12:23 PM
892 mục cấp trên đầu tiên constructors
xây dựng, lịch làm việc ước lượng unindented, bắt đầu kết thúc từng cặp, 746-D
tiếp tục bất thường, tổng quát về 408, xây dựng các xét nghiệm và khói hàng ngày, 671 khái
quát về hội nghị này và mã hóa tự động hóa của 704, sự ước tính thời gian, 671 kế hoạch lợi
ích của, 844 845-lợi ích của 702, giảm phạm vi, luận điểm 676, 69 đã xây dựng, 703, bị gãy
reestimating 705 người, 672 đang định dạng. Bố trí xem các nhóm, các điều kiện 704 xây dựng,
672 các mối nguy hiểm, đặc tả tránh với luận điểm 844, 707, tài nguyên cho 677, khả năng tiên
đoán lợi thì được định nghĩa, đội 702 844, 676 mở rộng, đang chuyển đổi loại dữ liệu, 635, 702
lợi ích constructors chẩn đoán hợp tác kĩ năng, quan trọng của khu vực, nắm giữ cho thêm
người, nông cạn, so với bản, sâu 151-152 828 704-705 người ngoại lệ với, sự đúng đắn về
197, 199, 463, 706 quan trọng của các hướng dẫn, 151-chi phí 152. Thấy hiệu suất điều chỉnh
sáng nay cũng phát hành 705 người đang sở khởi dữ liệu của thành viên, thay đổi ước tính,
666 151 áp, 706, 577 refactoring lợi ích cộng tác, 480 481-pretest yêu cầu tài sản, 704
singleton thực thi, 151, thời gian tiêu thụ gỡ lỗi bởi những phiên bản thỏa thuận, 704, vật chứa
các lớp học, 310 474-khoảng 475, 703 bình khí nén các xét nghiệm khói, 88, 143 dị tật bẩm
sinh, 265 519-đóng góp cho 520 702 unsurfaced làm việc, đường, 754 continuation-758 tới
phát hiện dị tật bẩm sinh, dữ liệu tiếp tục phát biểu này, 472, 380, 381 số 379 đã vào bị lỗi lề
thói hàng ngày, kiến trúc điều căn bản đó, đến 518 Phố 46 hợp nhất, 706 liên tục ước lượng số
658, 828, các lớp học xấu, xét nghiệm, phòng số 514 đấy-độ sâu 515 cấu trúc kiểm soát sửa
của dị tật bẩm sinh, 472-473, 265 519 thay đổi, nhận dạng các lĩnh vực, 99 South Korea@ item:
inlistbox Longtitude direction biểu thức chính quy trong. Thấy quy tắc tổng quát về phần mềm
mã điều chỉnh. Xem dữ liệu các biểu hiện bun chất lượng, khoảng 475, 522-474 chuyển dạng
mã cho trường hợp này. Thấy đôi lời tuyên bố lập trình, so với trường hợp chậm lại, điều chỉnh
danh sách kiểm tra, là 459 $ 773, 780, 480, 481-kết hợp kỳ có vụ nổ súng tại số 509 phố-510
bình luận, 804 805, 817-tài nguyên, số 658 được định nghĩa, có vụ nổ súng tại số 509 phố tiểu
bang-510 sự phức tạp, các khoản đóng góp cho, đếm vòng lặp. Thấy những vòng cho được
định nghĩa-dùng đường dẫn này, thử nghiệm, 9306456 - 9303425-là 459 $ chẽ 510-hợp chất
phát biểu này, 443 512 căn cứ các tiết học để bắt nguồn các lớp học, thiết kế, 46 điều kiện
dòng chảy. Thấy điều kiện 143 tiểu bang, có vụ nổ súng tại số 509 phố c¥c léi khai nhập vào
các lớp học, quá chặt, 142-143 đã thoát tiểu bang, có vụ nổ súng tại số 509 phố continuation
nét, thiết kế này rộng 757 loại, 100-102 các lớp học, thử nghiệm tốt, độ sâu 515-516 loại dữ
liệu, quan hệ đến, sự linh hoạt, 100-101 đã giết tiểu bang, có vụ nổ súng tại số 509 phố-510
254-255 mục tiêu của, 100 tương thích với di sản, với 516, tài liệu hướng dẫn, 780 nới lỏng, 80,
100-102 trường hợp trên danh nghĩa gặp lỗi, độ sâu 515 dấu vết hướng về bên nào bắt đầu-
end gấp đôi từng cặp, vật thể-kiểu tham số, kiểm tra, máy phát điện cho 101, 525 746 524--với
747, 102 loại kiểu ngữ nghĩa. Các loại gotos xem dữ liệu. Thấy tá"›i đơn giản trong lời
tuyên bố kiểu tham số dữ liệu, 101 dùng tiểu bang, có vụ nổ súng tại số 509 phố-510 nếu phát
biểu. Lời tuyên bố xem như đơn giản kiểu đối tượng, dữ liệu từ điển 715, 101, 255, accelerated
innovation) 9306456 - 9303425 kích cỡ của luồng dữ liệu, 100 thử nghiệm, có vụ nổ súng tại số
509 phố-512 điểm then chốt, 460 tầm nhìn của, 100, 238 xét nghiệm bình chọn dữ liệu-phong
cách bố trí là 239, tương đương $ 745-752 máy ghi dữ liệu công cụ bảo hiểm, những vòng 526.
Thấy những vòng lặp giám sát, 526 công cụ cấu trúc dữ liệu. Thấy những cấu trúc nhiều trở về
từ thói quen hàng ngày, kiểm tra cơ sở có cấu trúc, 505-có vụ nổ súng tại số 509 phố chuyển
dạng mã cho dữ liệu 391 ppm (parts per million 393-CRC (Hạng, trách nhiệm, điều chỉnh null
phát biểu này, 444-445) bài, 1 1 8 cộng tác mảng chiều bỏ sự, đệ quy. Nhìn thấy sự sáng tạo,
đệ quy quan trọng của, 829, 625 857...-626 độ tin cậy mối tương quan với hãy đánh dấu những
công cụ, 713 mảng bỏ sự, sự phức tạp, tham khảo 457 tò mò, nhân vật, 822 đóng vai trò gì
trong phòng 825 626--627 trong trở lại như. Thấy đồng tiền lời tuyên bố các loại dữ liệu trở lại,
297, 628 dữ liệu bộ nhớ đệm 629-dữ liệu có chọn lọc với, điều chỉnh, xây dựng ẩn dụ 254 điểm
phù động để integers 625, dữ liệu nối tiếpstencils với, 254 cho, lập chỉ mục 18, 627 trong dữ
liệu có cấu trúc 628-lập trình, mục đích của 624, 454-

Z02455 tôi619670.fm - 1893, Ma'hôm thứ tư trang hôm thứ Tư, 12, năm 2004 12:23 PM 12:23
PM
mục cấp hàng đầu cuối cùng dị tật bẩm sinh trong mã - 1893
loại dữ liệu thay đổi, mới đây, 547, 526 debuggers tượng trưng 527-"một" tiền tố Công ước,
luận điểm 272, Mau ra tuyến 559... và dứng-thì... 561 hồ sơ được chấp thuận, 549 kiểm tra cú
pháp-550 trong số đó, 557, các loại dữ liệu trừu tượng. Thấy ADTs bình luận, niềm, 550 trong
số đó 560 chỉ kiểm soát. Xem danh sách các khuyết tật chung, chỉ kiểm soát hệ thống 547, 558
debuggers BCD, quá tường tận đến nổi như các công cụ cho 297, 549, 557, 544 tạo hồ sơ
kiểm tra bun. Thấy bun biến số gỡ lỗi, 547 chào đón-#548 thử nghiệm, so với 500, thay đổi,
nhận dạng các lĩnh vực, chi phí, 29 99-30, 474-thời gian khoảng 475 cho thiết lập maximums,
549, nhân vật. Thấy dữ liệu công cụ liệuname, tính cách 526-527, x545, những công cụ cho
526, 527-, x545, lý tưởng là 556-, loại Mau ra tuyến 559... và dứng lý tưởng là 556-Mau ra
tuyến 559... và dứng 719,. Còn thấy 719. Gặp gỡ lỗi danh mục aids cũng, 316 bé ở-318 gỡ lỗi
hiểu biết những vấn đề, aids năm 539 phức tạp. Thấy những cấu trúc như những cơ hội, 537 dị
tật bẩm sinh-đơn vị 538 x545cấu trúc kiểm soát các xét nghiệm, mối quan hệ, để, phòng thủ.
Xem thử thay đổi aids gỡ lỗi trường hợp, x545254-255 535 được định nghĩa, cảnh báo, điều trị
như gặp lỗi, 557 đang tạo ra. Thấy tạo kiểu công cụ, lý tưởng là 556 gỡ lỗi Diff aids, 297 hành
hình profilers tiền tệ cho 557, 558-C++ preprocessors, 207-định nghĩa, 278 208 đang mở rộng
vùng khả nghi, trường hợp này phát biểu này, 206 loại được đánh sốstyle name. Thấy 547 sớm
giới thiệu khuyến cáo, các loại được đánh sốstyle name trải nghiệm của các lập trình viên, 206
điểm nổi. Thấy nổi điểm ảnh hưởng của cuộc tấn công 537, lập trình, 206 loại dữ liệu tìm dị tật
bẩm sinh, 540, Mau ra tuyến 559... và dứng-560 lên kế hoạch cắt bỏ, 206-integers 209. Thấy
loại dữ liệu số nguyên sửa dị tật bẩm sinh, 550 trong số đó 554-chiêu, kiểm tra, 208-209, 255
đoán dữ liệu lặp đi lặp lại, năm 539, 207 preprocessors-208 điểm then chốt cho, lịch sử, 535
318-sản xuất những ràng buộc trong 536, 273, 277 F, thử nghiệm giả thuyết 278, 543, 546 544-
phát triển phiên bản khác nhau, 205 thểname. Thấy loại dữ liệu tăng dần thểname tiếp cận,
mục đích của 205 547, quá tải, 567 hàm không hiệu quả để tiếp cận với, năm 539-540, 208-
Cuống Phiếu 209 chiêu. Thấy chiêu, phiên bản 562 điểm then chốt kiểm soát công cụ, 207
refactoring để các lớp học, 567, 572 số thứ tự dòng quá tường tận đến nổi, 549 từ bàn quyết
định. Thấy bàn điều khiển theo tài nguyên, là 239, 557 công cụ vải băng phương pháp dữ liệu
có chọn lọc, việc liệt kê các khả năng, 546 254 tuyên bố dữ liệu nối tiếpstencils, 254 lỗi nguồn,
nhiều năm liền 543-544, 794, 802 bình luận của-803, 816 sợi dây. Thấy loại dữ liệu chuỗi công
cụ kiểm tra, 557 logic const kaplinsky khuyến cáo, cấu trúc 243. Thấy nhiều bá"™ biãªn
dá"‹ch nhắn tin của các cấu trúc 550 trong số đó tuyên bố và định nghĩa gần đầu tiên sử
dụng t_ prefix\ Công ước, 272 thu hẹp lại tìm kiếm, 546 mã quy tắc, 242 317-243 người dùng
định nghĩa. Thấy rõ ràng tạo kiểu sửa, năm 539 định nghĩa gần sử dụng quy tắc đầu tiên, biến
số của thành thạo từ, hiệu suất, biến thể, 536 537 242 317-243-272-dự án 273-quá tường tận
đến nổi rộng, cuối cùng được khuyến nghị sử dụng thiết lập cơ sở dữ liệu 243, 557, 761 cấu
Hình-763, 601 các vấn đề hiệu suất của những lý do tâm lý, ẩn tuyên bố, là 239-240, 65 554
SQL-lý tưởng là 556 trên một dòng nhiều, 762 761-thiết kế hệ thống con, 85 phần mềm chất
lượng, đóng vai trò gì trong 536, nêu rõ. Thấy nêu rõ các hội nghị cấp refactoring dữ liệu, 571
572, 577-đánh dấu, niềm chốt lại, các dữ liệu, bình luận của 550 trong số đó, 802 ngày trong
tháng-, việc xác định, cải tiến khả năng đọc, thứ tự của 762 538, 414 413-được khuyến nghị sử
dụng phương pháp, 541, 762 vị trí deallocation reexamining mã bị khuyết tật, chiêu, cho 325
năm 326, 763-tá"›i phát biểu cho, 547 là 399 USD sử dụng tất cả tuyên bố, 257 chiêu,
của, năm 326, 330, 332, thì... 561 hồ sơ được chấp thuận cho người trang trí tài nguyên mẫu,
104.Xin khẳng định c¥c léi khai gỡ lỗi, 191 193-Satan là giúp việc, năm 539-540 dị tật bẩm sinh
trong mã gỡ lỗi dàn giáo cho 558, các lớp học dễ bị lỗi, 517 đến 518 phố aids để-. Gặp gỡ lỗi
phương pháp khoa học của AIDS, 540 544-phân loại các, đến 518 phố-520 của hệ nhị phân tìm
kiếm, 546 mã của sự tự nhận thức bản từ 538, lỗi giấy tờ thôi (typos), 265 519 bệnh mù, nguồn,
554-gom từ 555 được mã nguồn comparators, ví dụ, hoàn toàn mã lý tưởng là 556, 558
breakpoints giữ thăng bằng lỗi, 542 543 490-491-nghỉ giải lao, cầm lấy #548 cách tiếp cận mê
tín, xây dựng, tỉ lệ bạo lực, #548-549 năm 539-540 do, 520-
Z02521 tôi619670.fm làm chết 894 ngày thứ tư, thưa cô trang hôm thứ Tư, 12, năm 2004 12:23
PM 12:23 PM
làm chết 894 mục cấp trên đầu tiên lập trình phòng thủ
dị tật bẩm sinh trong mã, tiếp tục vấn đề an ninh, 212 phân chia và kỹ thuật, chi phí của tôicó
phát hiện, tầm thường lại quy cách lỗi 472, 209 111 chi phí sửa, 472-473, 188 nhập kiểm tra tài
liệu hướng dẫn, như, cơ sở dữ liệu của 527 781, được định nghĩa tiểu bang, dữ liệu có vụ nổ
súng tại số 509 phố-510 sự đột phá, tài liệu hướng dẫn 117 bị phát hiện bởi kỹ thuật khác nhau,
định quyết định biến số. Thấy rõ rệt bản chất của, tuyên bố 76 chiếc bàn của, Delphi, recoding,
470 để hợp ngữlanguage, 90-91 encapsulation, phân phối, 517 đến 518 phố 640-642 ca-đủ,
việc xác định, 1 1 8 119-dễ sửa dị tật bẩm sinh, 265 519 DeMorgan khắc khe, ứng dụng, là vấn
đề cơ bản, 77-78 danh sách kiểm tra, 489 lỗi 437 436-extensibility 80 tỷ lệ dự kiến, mục tiêu
của, 521 522-dependencies, mã-ra lệnh cho đúng thủ tục thôi, việc xác định, tìm kiếm của danh
mục, Mau ra tuyến 559... và dứng-560, công cụ kiểm tra hành lý dịch vụ vỉa hè, 716 sinh nhật
thứ 115-117 sửa. Gặp gỡ lỗi; sửa, 95 formalizing hình tròn lớp giao ước, dị tật bẩm sinh đã làm
rõ, 106 348-350, 122-danh mục mục tiêu 123 chậm lại cho việc phát hiện chính thức. khái niệm
mới, các hoạt động tốt, 347 bàn cho, 31-32 chậm lại tài liệu hướng dẫn chính thức, thấy 350
dựa trên kinh nghiệm đó thì chuyện. Thấy dựa trên kinh nghiệm đó thì chuyện lúc có, 542 thiết
kế-543, 350... cũng kiểm tra lỗi cho, 105-106 đã hiểu lầm như nguồn ẩn thiết kế, 348 người
hâm mộ cao trong mục tiêu, 80 cho việc khởi tạo ra lệnh, 265 519, 348, 122 cơ hội tiêu chuẩn
IEEE trình bày, nêu rõ lề thói hàng ngày, 348 349-thông tin lẩn trốn, 92-97, 120 538 537-rõ ràng
và 348, 91-92 sản thừa kế bên ngoài công trình xây dựng miền, tổ chức các đoạn mã, 348
accelerated innovation) luyện tập, 111-117 265 519, hiệu quả, 349 tham số điểm then chốt, 123
phần trăm trong số đo, thiết kế, mục tiêu, 469 leanness 81 472 các khái niệm trừu tượng, hình
thành-phù hợp, độ chi tiết cần thiết, sinh nhật thứ 115-các vấn đề hiệu suất của 117, 601 89-90
nồng độ, 82-87 lập trình viên là lỗi của mình cho các vấn đề tình cờ, 265 519, 77-78 loose đôi
vậy mục tiêu, 80 Cải tiến khả năng đọc, 538, 119 BDUF thấp để- medium mục tiêu người hâm
mộ, 81 refactoring sau khi sửa, 582 cái đẹp, 80 bảo trì mục tiêu đó, phạm vi 80, 265 519 cách
tiếp cận từ dưới lên Để thiết kế, tinh thần hạn chế của con người, 79 tự kiến thức từ 538, 112-
113 thước đơ, những dấu hiệu cảnh báo từ 848, kích cỡ của các dự án, những tác động kinh
doanh, hệ thống con logic, 85 nondeterministic bản chất của, 76, 87 ADE 651 653-lưu giữ công
việc, 117-1 1 8 hướng đối tượng, tài nguyên để, 119 nguồn, bàn đến 518 phố điểm trung ương,
kiểm soát, 107 đồ vật, thế giới thực, việc tìm kiếm, 87-89 giữ thăng bằng, 542-543 thay đổi,
nhận dạng các lĩnh vực, mức độ, những gói hàng 82-85 phòng thủ 97-99 mẫu hình lập trình,
điểm chung. Thấy mẫu hình Maryland... bên cạnh là quán ăn lời khẳng định cuồng nhịêt, 194-
thay đổi, quản lý của hiệu suất, điều chỉnh các giả định để kiểm tra, danh sách, 190 666-667
loại, 590 589-vững các chướng ngại vật, 203 205-đặc điểm của chất lượng cao, mục tiêu có
tính di động, luận điểm 81, 211: 212 80-81-heuristics luyện tập. Gặp gỡ lỗi dựa trên kinh
nghiệm đó thì chuyện aids, 205-209 danh sách kiểm tra, 122 123, 781-thiết kế được định nghĩa,
187 các lớp học, division vào các hoạt động, 86, 110-1 1 8, thay đổi, lỗi 122 194 197-cộng tác,
sinh nhật thứ 115 ưu tiên nào trong, 76 trường hợp ngoại lệ, 198-203, 211: thông tin liên lạc
giữa bản mẫu, 114-sinh nhật thứ 115 quy cách thông điệp thân thiện, 210, 83-hệ thống con 84
nguồn tài nguyên cho 119, 121 uyển chuyển crashing-bản hướng dẫn, 210 hoàn thiện, việc xác
định, hạn chế bản chất của, 76 các nguyên tắc hướng dẫn để mã sản xuất, sinh nhật thứ 115-
117 reusability mục tiêu, 80 209-210 sự phức tạp, quản lý 77-80 lề thói hàng ngày, của, 86-87
lỗi crash bản hướng dẫn, khó 209 hoạt động xây dựng, như, 73-74 Cẩu thả quá trình tự nhiên
của, 75-76 lỗi quan trọng, 209, hợp đồng sự định hướng bằng cách, phần mềm cấp hệ thống
thứ 233, 82 điểm then chốt cho, 213 đôi vậy loại, 100-102 kỹ thuật chuẩn mục tiêu, 81 quy cách
ghi lưu, 210 truy cập hệ thống con, cơ sở dữ liệu tiêu chuẩn 85, 122, vấn đề IEEE do, 210
được định nghĩa, 74 stratification 81 sự cải tiến chất lượng mục tiêu, kỹ thuật, biểu đồ, vẽ, 107
gắn bó về mạnh mẽ, 105, 188 cuộc thảo luận khác, tóm tắt quan điểm, 117 cấp hệ thống con,
82-85 robustness, so với 197,

Z02sự đúng đắn về tôi619670.895 trang hôm thứ Tư, fm Ma thứ tư, 12, năm 2004 12:23 PM
12:23 PM
mục cấp hàng đầu cuối cùng loại
hệ thống 895 được đánh sốstyle name dependencies thiết kế một hệ thống phụ, như, 117, 781
trường hợp chung quy cách đầu tiên, 85-tài liệu thiết kế chi tiết, 778 359-360 xét nghiệm nào
thực hiện, 503, 777 bên ngoài sự đúng đắn về 778-thử nghiệm, công cụ cho 358, 710, 807,
Javadoclanguage Oceanic 815 mặc định cho bao bọc mọi trường hợp, 360 từ trên xuống dưới,
111-113, 817 điểm then chốt gotos với thứ 406 Nó-407, đánh đổi, 76 cái tên như 284, 285,
778--779, 358, bộ sưu tập umlstencils biểu đồ vô giá trị, 1 1 8 780 cuộc sống-phê phán nhúng
hệ thống, hệ thống con giao diện người dùng, tổ chức của dữ liệu, 85 780 31-32 tài liệu hướng
dẫn của thị giác, những giả định tham số 1 1 8, 178 bản chất của quá trình thiết kế rõ rệt, vấn
đề độc ác bản chất của, 74-75 pseudocode, có sự ưng thuận từ, 220 76 Wikis, lưu giữ trên, 117
tài nguyên, Oceanic 815 đã mô phỏng khối tinh khiết phong cách bố trí, destructors, những
ngoại lệ với, thói quen 199, 740 những giả định tham số 743-thiết kế, tài liệu, chi tiết 778 178
encapsulation thử nghiệm nhà phát triển. Xem thử nghiệm lề thói hàng ngày, 780 người dùng
những giả định về, quá trình phát triển sang phải 1-4-1. Thấy SDFs, luận điểm 778, thật ra 158
tiếp cận để phát triển tự ghi nhận, 778-781 mã các lớp học, cho, được nâng lên 139-vai trò 143
tiêu chuẩn phát triển, IEEE, 813 kích cỡ của các dự án, ảnh hưởng của 657, các lớp học quá
chặt chẽ, biểu đồ mã nguồn như, 7 142-143 dựa trên kinh nghiệm đó thì chuyện sử dụng thiết
kế, 107 chuẩn, IEEE, 813-814, 574 bộ sưu tập umlstencils đối tượng lầm lũi nhìn xuống đất, 1 1
8 sự khác biệt, quản lý, kiểu dáng 683 người bạn đáng lo ngại, sang phải 1-4-1 lớp Diff công
cụ, lý tưởng là 556, 712, 778 UDFs dựa trên kinh nghiệm đó thì chuyện với, 90-thiết kế 91 tác
trực tiếp thị giác, thiết kế của bàn, hạn chế khả năng truy cập 1 1 8, được nâng lên 139 lợi của,
420, so với nó như thế nào, tại sao 798 797-chi tiết cá nhân trong lớp giao diện chỉ kiểm soát
cho, 414, con chó và con ngựa con cho thấy 495, được nâng lên 139-sang phải 1-4-1 tuyên bố,
con chó tiếp cận trường hợp đồng thẻ, năm 326 327-dữ liệu công khai thành viên, 567 422 421-
DoNothing () macros, 444-445 thành viên công cộng của các lớp học, được nâng lên 139 ngày
trong tháng, 413-414 ví dụ khô (Không Lặp lại bạn) lề thói hàng ngày trong giao diện công cộng
được định nghĩa, nguyên tắc, 565 413 đáng lo ngại, sang phải 1-4-1 phương pháp thiết kế cho,
420 duplication vi phạm về ngữ nghĩa, sang phải 1-4-1-142 mềm dẻo định dạng trong các tin
nhắn. ví dụ, tránh với thói quen hàng ngày, 164-yếu, 567 165 416 người-mã như chỉ số 423,
565 refactoring vô vàn những vòng lặp, 367, 374, 423 fudging chìa khóa xe cho 424-endline
bình luận, 793-795 giá bảo hiểm xe chẳng hạn, 415 416 người bố trí endline-, tương đương $
745, 751 743--752, chìa khóa xe cho 423, 767 424-E tiếp cận đối tượng, 422 423-sớm của môi
trường sóng, 67 loại biến đổi chìa khóa được đánh sốstyle name, 424 dễ thiết kế bảo trì mục
tiêu, 80 lợi ích của, 303 tháo rời xuất sắc, 720, 851 852 eclecticism-booleans, giải pháp thay thế
cho 304, kỉ luật, quan trọng của công cụ sửa 829, C++, 303 304, 306 cuộc tranh luận-luật lệ,
733, 712 beautifiers thay đổi, 304 disposing lợi ích của vật thể, 206 lớp-máy phát điện phân
cấp, 713, 317 phân chia và danh sách kiểm tra kỹ thuật chinh phục, 111 hãy đánh dấu những
công cụ, 713 bình luận thay thế cho, division, 292 293-Diff công cụ, 712 802 803-làm những
vòng lặp, với 369-Đại Bàng 370. Thấy những vòng grep, 711 cũng tạo ra không gian riêng cho
Java, tài liệu hướng dẫn ý tưởng tồi, 710 307 711-được định nghĩa, 303 viết tắt của tên, 284-tài
liệu hướng dẫn giao diện, 713 285 bộ mô phỏng bởi các biến số toàn cầu, 338, 128 nhập ADTs
cho công cụ 712, giá trị rõ ràng mới cạm bẫy, 306 mã xấu, của 568, chuỗi tập tin đa mục đầu
tiên tìm kiếm, trò không hợp lệ, 305-306 mô hình cho, 812 cuốn sách-813 712 711-iterating
qua, lưu giữ chúng làm việc, 305 117-1 1 8 mẫu, 713 Java, tạo ra không gian riêng cho 307,
danh sách kiểm tra, 780-781, 816, 464 817-hiệu năng ngôn ngữ có thể có trong các lớp học
303, 780, 80/20 (80/20) quy tắc, 592 giới hạn với vòng lặp, 305 bình luận. Thấy bình luận khác
điều khoản nêu rõ, năm 269, 274, 277-279, 780 cấu trúc kiểm soát hàm gọi bun với 359, sử
dụng, 303 CRC tham số thẻ tín dụng, 1 1 8 trường hợp c¥c léi khai thay vì, 360 dễ đọc từ, 303,
đã làm rõ, 350 dependencies xiềng xích, trong 358,-360 độ tin cậy lợi thì 304

Z02tôi619670.896 trang hôm thứ Tư, fm Ma thứ tư, 12, năm 2004 12:23 PM:23 PM
896 12 đầu tiên từ trên mục cấp bình đẳng, nổi điểm
loại, tiếp tục được đánh sốstyle name yếu tố ảnh hưởng đến sự, 674 675-preprocessors, 719
718-standard for, 306 độ chi tiết cho, công cụ thiết lập 672, 304, 718 há"£p lá"‡ Hã³a với-
305, dựa trên tính cách inaccuracy, lối ra chức năng, 391 ppm (parts per million. Xem cũng trở
lại Visual Basic, 303-306 828-C¥c léi khai ăn kiêng. sự bình đẳng, nổi điểm, 295-296 nhiều kỹ
thuật với báo cáo lối ra. Thấy phá vỡ partitioning lý tương đương điện toán, so sánh 512, 672
c¥c léi khai mã lỗi, 195 chi nhánh mục đích này, việc thiết lập, 671, 392 phụ lối ra-393. Xem
cũng phát hiện, làm lỗi trở về sớm, 29-30 sự lạc quan, báo cáo 675, 513 đoán lỗi khái quát, 671
vừa ra khỏi những vòng lặp, với 369-381 372, 377 nhân công-việc xử lý lỗi. Còn thấy việc lập
kế hoạch cho các trường hợp ngoại lệ sự ước tính thời gian, kinh nghiệm cá nhân, 671, 831
832-kiến trúc điều căn bản đó, 49 50 nên thường xuyên, 672 thử nghiệm được tái thiết lại cái
bản mẫu, 114-sinh nhật thứ 115 lời khẳng định cuồng nhịêt, so với, 191 giảm phạm vi, thử
nghiệm như học, 676 vững các chướng ngại vật, 203 205-đặc tả các yêu cầu, 672 823, 852
822--Tràn qua FIFO làm tổn hại tới vùng đệm 853, tài nguyên cho 677, các biểu hiện vượt bậc,
631 632 196-đội, mở rộng, các biểu hiện 676 Giá trị hợp pháp, gần nhất 195 chi nhánh trợ sự
kiện 170 bun. Bun biểu cảm thấy lập trình tiến hóa, phòng thủ. Nhìn thấy sự tiến hóa hằng số
dữ liệu, phần mềm loại cho những kỹ thuật 635, 194, 197-việc giao tiến hóa Đang sở khởi tại
biên dịch thời gian xem, mã lỗi, trả lại, 195 chi nhánh tăng dần 633 632 phát triển-xử lý lỗi lề
thói hàng ngày, gọi, ẩn dụ chỉ dẫn bố trí 196 749-750 trường hợp ngoại lệ. Lỗi xem cũng có
nhiệm vụ xử lý precomputing kết quả, 635 638-thiết kế cao cấp hàm ý, vấn đề, 199 197 trừu
tượng-200, 634 dịch chuyển đúng việc xử lý địa phương, 196 các giải pháp thay thế cho, 203
giảm sức mạnh, 39 334 587 632-ghi lưu thông điệp cảnh báo, 195 chi nhánh căn cứ cho dự án,
các lớp học cụ thể, subexpression loạitrừ, thông điệp, 49, 195 chi nhánh-196, 210 203 639 638-
dữ liệu hợp lệ, trả lại tiếp theo, 195 chi nhánh C++, 198-199 gọi hệ thống, hiệu năng của, câu
trả lời trước, tái sử dụng, tập trung các phóng viên, 201 195 chi nhánh-202 634 633-sự nhân
giống thực vật, 49 constructors thiết kế với, 199 extensibility mục tiêu, 80 refactoring thiết kế,
phòng thủ 577 danh mục, lập trình giám định, 467 từ bên ngoài, trở về giá trị trung hòa, 194
211: tài liệu từ bên ngoài, 778 777-robustness 51, 197, destructors với, 199 lề thói hàng ngày,
lập trình cực đoan thiết kế cùng với, bắt dãy nhà quy tắc rỗng, 201 thành phần của sự cộng tác,
482 222 encapsulation, vỡ, 200 khuyết điểm phát hiện, higher education-đóng cửa, 196 472
đầy Quy tắc thông tin, 200 được định nghĩa, 58 há"£p lá"‡ Hã³a thiết kế, 50 Java, 198-tài
nguyên trên 708 201, 856, thông điệp lỗi bàn so sánh, ngôn ngữ, mật mã, trả lại, 195 chi nhánh
198-199 thiết kế, lấy thông tin ở cấp độ 49 quy tắc, 199-F
liá"‡t kãª, 196 200 mã thư viện thế hệ, 201 Cảnh mô hình này,
thân thiện quy cách thông điệp, 104 210 việc xử lý địa phương, 199 factorials quy tắc, 397 gram
398-
lỗi. Xem cũng dị tật bẩm sinh trong mã; không điều kiện khác thường, như giải, 154 199. Xem
cũng refactoring
ngoại lệ mục đích của, 198, 199
phân loại các phương pháp của nhà máy, đến 518 phố-520 mã thiết kế sao cho sử dụng, 199
phương pháp Nhà máy mô hình này, 103-104
mã hóa. Thấy trong mã refactoring dị tật bẩm sinh, 577 ifs refactoring lồng nhau ví dụ,
thẻ chó cánh đồng, năm 326 327-tài nguyên cho, 212 213 452--453
trường hợp ngoại lệ. Thấy ngoại lệ đã làm ra tiêu chuẩn sử dụng, 202-203, 577 refactoring để
xử lý. Lỗi xem việc xử lý Visual Basic, 198-199, 202 người hâm mộ ở, 80
tá"›i phát biểu cho xử lý, hành hình, 557-558 profilers, 720 người hâm mộ,
dự án 401-402 81 khả năng thực hiện công cụ mã trọt ẩn dụ, 14-15
nguồn bàn, đến 518 phố xây dựng, công cụ, 717 716-khoan dung, lỗi 50 vấn đề cơ bản, 77-78
thư viện, 717 mã ạnh tính năng hợp nhất,
thế hệ mã lịch làm việc ước lượng thủy 718, 700-Tầng 2!
tiếp cận tới, danh sách 671, quá tường tận đến nổi. Thấy những con số Fibonacci, quá tường
tận đến nổi 397 gram-398
, 666 sắp đặt chi phí thay đổi công cụ, các con số 718, danh sách,
kiểm soát xxxiii, so với 675, 716,

Z02linkers tôi619670.897 trang hôm thứ Tư, fm Ma thứ tư, 12, năm 2004 12:23 PM 12:23 PM
cấp hàng đầu cuối cùng mục báo cáo
các tập tin foreach 897 tá"›i những vòng lặp, 367, 372 G
ADTs, điều trị như, 130 chậm lại chính thức quy tắc tổng quát về phần mềm authorship records,
tác giả, chip 486 811 vai trò chất lượng C++ tập tin nguồn trật tự, 773, 491 bản tóm lược lợi ích
cộng tác dụng phụ, chẳng hạn, 481 đang xoá nhiều trách trò chơi, chi phí, 522 490 dự án 401,
491 402-danh mục đã vượt qua 492 gỡ lỗi, 537-ghi nhận, 810 có 811-Cờ CMM 491, được định
nghĩa, 474-bố trí khoảng 475 trong vòng, 771-Mã ví dụ hoàn toàn, 773 biến số toàn cầu nêu rõ,
772, 811 491 490-duy trì thói quen truy cập. Lề thói hàng ngày trong, truy cập thấy 772 so với
các cộng tác, thói quen hàng ngày từ khóa cuối cùng, Java, 243 496 495-răng cưa vấn đề với,
336 337-cuối cùng phát biểu này, 404-405 được định nghĩa, 485 các giải pháp thay thế cho,
339-342 sửa cái tôi quá dị tật bẩm sinh ở 490, 343 annotating, sửa chữa lỗi, nói một cách khác,
tôi có thể kiểm tra danh sách kiểm tra, 489 lỗi thay đổi, những vết, 336, 560 dự kiến danh mục
các kết quả từ, 485-chip 486, 343 danh mục kiểm tra của 344-chẩn đoán xác nhận 551, tinh
chỉnh, 489 biến các giải pháp thay thế, 339 lớp sẽ nhanh, tác động của 551, theo sau sân khấu,
489, 337 vấn đề tái sử dụng mã dị tật bẩm sinh, nói một cách khác, tôi có thể kiểm tra sở khởi
cuộc họp, 488, 803, 809 bình luận của vấn đề bảo trì, nói một cách khác, tôi có chìa khóa, 497
điểm được đánh sốstyle name mô phỏng bởi, một loại thay đổi quy tắc tại một thời điểm, quản
lý nói một cách khác, tôi có vai trò quan trọng, chip 486-487 338 chỉ là thay đổi, nói một cách
khác, và lập luận vai trò người điều phối, chip 486 g_ prefix\ bản hướng dẫn, 340 tiết kiệm chưa
được vá, số 552-12... khái quát giai đoạn mã, 487 đang trốn ở lớp, tương tự như việc thực hiện
dị tật bẩm sinh, tìm kiếm, 554 487 appraisals hiệu suất từ, đặc biệt là điều 153 trường hợp, nói
một cách khác, tôi lên kế hoạch sân khấu, 487 triệu chứng, những vấn đề thông tin sửa thay vì
chuẩn bị của sân khấu, 488 487-với, 95- 96 vấn đề, nói một cách khác, tôi có quy trình cho-số
552-12... 487, 489-sơ khởi, 337 vấn đề hiểu quy cách đầu tiên, tỷ lệ duyệt xét, 488 mã trung
gian kết quả, tránh, 550 trong số đó 551-báo cáo, những đơn vị 343 489 488-xét nghiệm, tài
nguyên cho 496 554, 497-điểm then chốt, 344 lá cờ REVIEWER'S INITIALS DATE RECEIVED
vai trò quan trọng, chip 486 quy cách đầu tiên, 339 địa phương thay đổi, nhận dạng các lĩnh
vực, tái duyệt, so với, 485, 341 khoá 98-99 sân khấu, 489 dàn xếp những mô đun cho bị hư hại
do, 337-338 bình luận cho chút ý nghĩa cấp, về vai trò của họ trong chip 486-487, tên là mô
phỏng hằng số 803, cách tiếp cận kịch bản bởi 488, 338, 266 cho loại được đánh sốstyle name-
267 người ghi chép, chip 486 f vai trò, Đã nhảy 263 lần, 273, 277, 278, 279, gotos, viết lại nó
với 403-404, giai đoạn 487, 489-342 cái tên cho 266-267, 3 giờ để cuộc họp, các vật thể 489
giải pháp cho con quái vật, 343, sự kết nối với ngữ nghĩa, 102, 467 tái duyệt kỹ thuật chính
thức tổng quát về, 335-336 mã định dạng linh hoạt. Bố trí xem sự nhất quán của, 251 đôi vậy
tiêu chuẩn để, 100-101 Fortranlanguage, 64 bảo quản các giá trị với 338 được định nghĩa, 464,
gắn bó về chức năng, khoảng 168-169 tái mã ứng cử viên dự, 337 vấn đề nổi điểm dữ liệu các
loại đặc tả chức năng. Thấy refactoring, 568 độ chính xác, 295 các điều kiện hạn chế các chiến
lược giúp giảm nguy cơ này, 342 343-BCD, 297 chức năng. Thói quen xem cũng sử dụng các
tham số như thói quen hàng ngày, 336, 316 bé ở các phép tính danh mục chuyển thành sự kết
nối với, về ngữ nghĩa của hoạt động chi phí 102, 602, 166, ví dụ-nhờ dòng nước sử dụng dữ
liệu với 167, 338, 295-so sánh sự bình đẳng được định nghĩa, 181 296 con đĩ dữ liệu, loại bỏ
việc với, 338, rất khác biệt, đã đánh giá trận disallowing, 150 chúa, 155 hoạt động với các lớp
học, điểm mấu chốt cho 295, 186, 832 gonzo lập trình làm tròn gặp lỗi, 297 nêu rõ in cho 172
quốc gia, 181, dữ liệu tốt, thử nghiệm, độ sâu 515-516 loại Visual Basic, 297 riêng tư, tràn qua,
đã phát hiện được 146 tá"›i phát biểu cho những vòng lặp trở lại giá trị, tạo dựng, 182
Adalanguage, đưa vào trong, là 399 USD lợi của tình trạng 374, như giá trị trả 181, lợi của, là
399 USD, 732 cấu Hình-733, 746-7 47 khi sử dụng, 181-giải pháp thay thế so với 182, chỉ
số 405, 377 nhân công-cơ bản của Fermat danh mục của 378, 410, 372 mục đích của đang
định dạng, 732

Z02tôi619670.898 trang hôm thứ Tư, fm Ma thứ tư, 12, năm 2004 12:23 PM:23 PM
898 12 đầu tiên từ trên mục cấp các công cụ thiết kế đồ họa
tá"›i phát biểu này, tiếp tục thay đổi, nhận dạng các khu vực của sự khiêm nhường, vai
trò, nhân vật, 821, 826, deallocation với, là 399 USD 97-99, 398 834 thiệt thòi của-là 399 USD
cho, luận điểm 122-f Hungary Công ước, 123 279 mã trùng, loại bỏ việc với sự cộng tác,, sinh
nhật thứ 115 của biến số khác, sự kết nối lai là 399 USD truyền thông hưởng lợi từ 256-257
khác điều khoản với, 407-mẫu hình thứ 406 Nó, 104 xử lý với, lỗi dự án 401 402-hoàn thiện,
việc xác định, Fortranlanguage dùng, là 399 USD sinh nhật thứ 115-tôi
hướng về phía trước sự định hướng 117, 408 đôi vậy loại, 100-102 Tôi/O nhập/xuất) (
hướng dẫn, 408 407-biểu đồ, vẽ, kiến trúc điều căn bản đó, có 49 107
thụt lề vấn đề với 398, phân chia và kỹ thuật chinh, thay đổi, nhận dạng các lĩnh vực, 98
điểm then chốt, 410 111 hiệu suất loại,
bố trí Hướng dẫn, 750 751-encapsulation 90-91 598,-hợp pháp sử dụng, có 599 407 408-giảm
với mô hình, lỗi 103 ý tưởng tồi (phát triển tích hợp
với, 398 vấn đề tối ưu hóa cỗ đúng thủ tục thôi, việc xác định và môi trường tự nhiên của), 710
711-lừa đảo tranh cãi về, 400-dự án 401 sinh nhật thứ 115-117 IEEE (thuộc Viện Nghiên cứu

vấn đề dễ đọc điện, 398 lớp formalizing giao ước, Kỹ sư điện 106), tài nguyên cho đội 409,
813-410, 122-danh mục mục tiêu 123 nếu c¥c léi khai viết lại với lồng nhau nếu, hướng dẫn sử
dụng, 109 110-hàm gọi bun với 359
402, 403-các thứ bậc cho, 105-phá vỡ dãy nhà, 106 đơn giản với,
viết lại với trạng thái biến số thông tin lẩn trốn, 92-97, 120 447
403 446--di sản, 91 404-92 trường hợp phát biểu này, so với,
viết lại với thử-cuối cùng, giao diện, như 360, 614 formalizing
404-405, 106 trường hợp c¥c léi khai hợp đồng, chuyển đổi qua,
tầm thường lại viết lại ví dụ, 400-accelerated innovation) tập luyện, dự án 401 111 117 448--
449, 451
, 408 nhãn mác sử dụng đến điểm then chốt, Xiềng xích của, 358 123-360
các công cụ thiết kế đồ họa, 710 độ chi tiết cần thiết, sinh nhật thứ 115-danh mục, 365 117
, 711 grep mạnh tính môđun, 107 trường hợp chung quy cách đầu tiên,
hệ thống trồng một phép ẩn dụ, 14-15 cách tiếp cận nhiều gợi ý, 359-360
GUIs (giao diện người dùng đồ họa) 110 continuation nét, kiến trúc này rộng 757 điều căn bản
đó, 47 bản chất của quá trình thiết kế, 76 bao bọc mọi trường hợp, 360, 576 refactoring dữ liệu
từ nền tảng cho, 87 nondeterministic khác điều khoản, 358-360, 407-
thiết kế hệ thống con thứ 406 Nó, 85 hướng đối tượng, tài nguyên để 119, bình đẳng, trên, cao
355
vật phân nhánh, thế giới thực, việc tìm kiếm, 87-89 xử lý ví dụ,
các mẫu hình lỗi, 103 105, 120-356 357-
H TẬP 110-1 1 8, 122 như giải lề thói hàng ngày, 449 đến 451-của các lập trình viên, thói quen
833-834, 114-nguyên mẫu, sinh nhật thứ 115, 358 lật phương pháp hack thiết kế, thứ 233 cho,
121 tần số tài nguyên, thử nghiệm theo thứ tự, trách nhiệm phần cứng, mô tả Để 613 612-
dependencies, thay đổi, các vật thể, 106 gotos 98 viết lại với 402, 403-, tăng cường hiệu suất
với, gắn bó về mạnh mẽ, 105 407-591 thứ 406 Nó tóm lược danh sách của những quy định,
108 nếu-thì-khác phát biểu này, đang chuyển đổi có một mối quan hệ, 143 thử nghiệm, tiên
đoán, 106 đến 447-448, dựa trên kinh nghiệm đó thì chuyện thiết kế từ trên xuống dưới, 111-
112, 113, 366 điểm then chốt các khái niệm trừu tượng, tạo phù hợp, Xem dạng Cây
heuristics bàn, thay thế, 89-90 các thuật toán so với 614, 12-615 mẫu hình, từ các giải pháp
thay thế 103 với thiết kế. Thấy dựa trên kinh nghiệm đó thì chuyện nhiều trở lại lồng nhau trong
thiết kế, tránh thất bại, 106-107, 513 392 đoán lỗi-đóng sách 393 loại, 107 đang trốn thời gian.
Thấy thông tin đang trốn tùy tiện trong, làm cho việc tích cực, cách tiếp cận từ dưới lên để thiết
kế, các thứ bậc, lợi ích của, 105-106 435-436 112-113 người hâm mộ cao trong mục tiêu thiết
kế, 80 lồng nhau. Thấy nếu c¥c léi khai lồng nhau bạo lực, 107 con người những khía cạnh về
phần mềm trường hợp quy cách đầu tiên bình thường, lưu giữ chúng làm việc, 117-phát triển 1
1 8. Thấy đặc tính, 356-357 điểm trung tâm kiểm soát, số 107 đường dẫn bình thường quy
cách đầu tiên cá nhân, cao 355 nếu điều khoản, 357 lẽ

Z02tôi619670.899 trang hôm thứ Tư, fm Ma thứ tư, 12, năm 2004 12:23 PM 12:23 PM
cấp hàng đầu cuối cùng tích hợp 899 mục
nhập thô nếu-thì phát biểu này, cao 355 357-thông tin đang trốn đang sở khởi refactoring, 573
biến số truy cập duy trì thói quen, 340 243 accumulators, đơn giản, 445-447, 127 ở ADTs cho
tuyên ngôn sự định hướng, 241 tuyên bố, bố trí đơn 748 749-những rào cản, 95- 96 C++ ví dụ,
241 bàn, thay thế với 413, 414-phân loại những bí mật, luận điểm 94 cho, 257 loại, cao 355 vấn
đề dependencies hình tròn, Bộ phạn hạng 243, ẩn tuyên bố, là 239-240 95, 243 thiết lập
bá"™ biãªn dá"‹ch ngầm instancing, 132 lớp dữ liệu nhầm lẫn với hậu quả của thất
bại để toàn cầu, 240 từ khóa, tạo ra, trong 175-176, 95- 96 dữ liệu const kaplinsky khuyến cáo,
243 chưa hoàn chỉnh Chuẩn bị, nguyên nhân loại, thiết kế, tầng lớp 93, 243 25-hằng số 27 lớp
chi tiết, là điều 153 thực thi, 243 máy đếm số tăng dần ẩn dụ, ví dụ, phát triển 93-94 khai báo và
định nghĩa đầu tiên sử dụng 15-gần 16 vấn đề phân phối, quy tắc quá mức, 242 317 243-tăng
dần 95 được khuyến nghị sử dụng cuối cùng tích hợp, lợi ích của 693 243, 694-quan trọng của,
đầu tiên sử dụng sự định hướng 92, 241-242 317 chiến lược từ dưới lên, 698 697-giao diện,
tầng lớp, 93 dị tật bẩm sinh, các lớp học nói một cách khác, tôi có thể sửa, 694, 697, các vấn
đề hiệu suất của các biến số toàn cầu, 337 96 quan hệ lợi thì 694 khách hàng quyền riêng tư
của các lớp học, 92-93 quan trọng của, 240-được định nghĩa, 692 241, 120 quỹ cho ví dụ Java,
242 317 243-thiệt thòi của từ trên xuống dưới bí mật khái niệm, 92 điểm mấu chốt, chiến lược,
đường 695 258 696-tạo kiểu cho 313, 314-biến những vòng lặp, được dùng trong, 249 gặp lỗi,
nhiều năm liền, 693 di sản của cháu, tính năng 244 chân giá trị tham số ạnh hợp nhất,
Ä'á"ƒ truy cập từ, 148 Con trỏ vấn đề, 241, 244, 700-Tầng 2! phát biểu này, 147 trường
hợp-148 cho 325-đặc tả giao diện năm 326, đường 695, 697 danh mục, về nguyên tắc cơ bản
của sự gần gũi, thật ra 158 242 317, 693 lợi ích giám sát tiến bộ khí nén so với 143, 243
reinitialization, tài nguyên, quyết định liên quan đến 708, 144, 300, kết quả sợi dây sớm, 693
147, cây cối sâu perturbers hệ thống, thử nghiệm với nguy cơ hội nhập ạnh, 699, được định
nghĩa, 144 527, 698 chiến lược sandwich-thiết kế công thức cho 699, 144 Visual Basic ví dụ,
241-242 317, 694 lợi ích lịch của các chức năng, riêng tư, tràn qua, đã phát hiện được 146
đang sở khởi bộ nhớ làm việc, 244 698, hướng dẫn cách tiếp cận lát, danh sách, 149 lên lề thói
hàng ngày, bao gồm 184-trực tiếp bước vào, 692 185 dựa trên kinh nghiệm đó thì chuyện thiết
kế, 91-92 với các tham số đầu vào, 274 các chiến lược toàn cảnh, 694, nhận dạng như một
bước thiết kế, nhập/xuất 88. Thấy tôi/O, 694, 696 cuống phiếu là một mối quan hệ, 144 chậm
lại. Thấy chậm lại tóm lược của chính thức đến gần, 702 điểm then chốt cho công cụ cài đặt,
160, 718, 697 người lái xe Liskov kiểm tra ảnh đó nguyên tắc, vật thể instancing từ trên xuống
dưới chiến lược, 696 144 694--ADTs 145, 132 hình chữ T hợp nhất, tầng 2! mục tiêu chính của,
136 phương pháp nhà máy, 103-104-lát tiếp cận dọc, 696 mixins, 149 lên singleton, 104, 151,
737, 764 thụt lề-768, 148-đa 149 lên các loại phụ lục truy cập dữ liệu số nguyên bàn, 452-426,
overridable phi danh mục overridable, so với 316 bé ở 428, thói quen hàng ngày trong đó có
429, 145--chi phí hoạt động phát hiện được 146, chỉ số 602, các loại dữ liệu supplementing
song song sửa đổi refactoring division loại, 293, 627 trong-628 với chỉ báo, 566, 293 l^n'-295,
chỉ số lượng điểm chung vòng lặp mục trong phạm vi của, tăng lên 294, 377 nhân công cây,
chỗ đất lún phát hiện được 146 phát triển tích hợp danh mục, 389, so với bảo vệ dữ liệu riêng
tư, Môi trường (ý tưởng tồi) 148, 710 711-loại được đánh sốstyle name cho, 305 riêng tư, tránh,
143 Giá trị cuối cùng, tích hợp 377 nhân công-378 được khuyến nghị sử dụng thành kiến chống
lại, 149 lên lợi ích của, chi 690-691, 694 693-quy mô của, số 383 384-lề thói hàng ngày bị đè
bằng tay để làm to bang, 691 tên biến, có 265 không có gì, phát hiện được 146 147-chiến lược
từ dưới lên, 698 697-vô hạn những vòng lặp, 367 374, ví dụ đơn các lớp học, đã phát hiện
được 146 bị gãy, 703 đã xây dựng các bài phê bình, 467 không chính thức đã vượt qua 492-
493, tương tự như tiểu và các lớp học, 576 siêu danh mục, 707

Z02tôi619670.Trang 900 ngày thứ Tư, fm Ma thứ tư, 12, năm 2004 12:23 PM 12:23 PM
900 mục cấp trên đầu tiên chính trực
tiếp theo hướng dẫn của hội nhập, tạo ra, 135-thiết kế thực hành, sao 138 111-117, 691, 694
các lớp học, nước ngoài lề thói hàng ngày, refactoring 697 với, lập trình, cực đoan 58 706, 576
liên tục quan trọng của, 850 851-mối quan hệ, 694 khách hàng có sự thiếu nhất quán tích cực
với các thành viên điều căn bản đó, 28, 33-34 xây dựng và thử nghiệm khói hàng ngày, vấn đề,
cách tiếp cận nối tiếpstencils so sánh sao 138, 706 702-không nhất quán trừu tượng, ví dụ 33-
34 được định nghĩa, 689 của 135-136 pseudocode, thành phần, 219 thiệt thòi của thông tin từ
trên xuống dưới vai trò, 93 chiến lược lẩn trốn, đường 695 696-đặc tả hợp nhất, trong, gặp lỗi,
nhiều năm liền đường 695, 697 693, J
ạnh tính năng chiến lược, 700-Tầng 2! chìa khóa điểm cho, 160 kẹp những vòng lặp, 617 618-
quan trọng của phương pháp tiếp cận, bố trí của, 768
689 Java-mixins 691, 149 lên ra khẳng định, ví dụ như trong 190 tăng dần dần. Thấy đối tượng
tăng dần dần, thiết kế cho, 89, 443 cú pháp biểu thức luận lý bao hàm, cặp tích hợp, nước
trong 137 mô tả về
đặc tả giao diện, 65, đường 695, 697 người nghèo, những ngoại lệ, ví dụ trừu tượng 198-201
, 708 điểm then chốt đối chứng tại 134-bố trí khuyến cáo, tương đương $ 745 135, 693 giám
sát chi tiết trong tư nhân, được nâng lên 139-sang phải 1-4-1 sống thời gian ví dụ, 247-248,
691-692 từ giai đoạn rất thích nêu rõ có tính hệ thống in cho 276, 277,
tài nguyên, 707 708-ngữ nghĩa, ví dụ, tham số nước trong 137 176-
nguy cơ chiến lược ạnh thứ 177, 699 lề thói hàng ngày trong giao diện công cộng sự nhất quán
của biến số 251 chiến lược sandwich, 699 698-đáng lo ngại, sang phải 1-4-1 tài nguyên, 159
lập kế hoạch cho 694, đọc-thời gian quy tắc, sang phải 1-4-1 Javadoclanguage tiện, 807,
Oceanic 815
, 698 tiếp cận refactoring lát, 575 576, 579-JavaScript, 65
, 703 xét nghiệm khói lề thói hàng ngày, di chuyển, 575 refactor JUnit, cho 531
chiến lược để khái quát về, 694, thói quen hàng ngày, sử dụng đến 576, chỉ trong thời gian 1
sự ràng buộc, 253
Cuống Phiếu 694, 696, vi phạm về ngữ nghĩa tóm lược của phương pháp tiếp cận, 702
encapsulation, sang phải 1-4-1-K thử nghiệm, từ 499 $ 142, 697, xử lý thông tin không liên
quan, chìa khóa cho các quyết định xây dựng Thấy từ trên xuống dưới chiến lược, 696 694-
nước trong 137 quyết định xây dựng hình chữ T hợp nhất, giao diện đồ họa, tầng 2!. Thấy GUIs
đã giết tiểu bang, dữ liệu có vụ nổ súng tại số 509 phố-510, 702 unsurfaced làm việc giao diện,
thói quen thường nhật. Còn thấy loại dự án phần mềm, 31-33-lát tiếp cận dọc tham số 696, thói
quen hàng ngày của chính trực, 464, 808 bình luận của trí tuệ, 826-828 sự chân thành thói
quen hàng ngày, refactoring ngoại giao với,
cách tiếp cận hộp công cụ trí tuệ, L 20 576 ngôn ngữ lập trình,. Thấy tình báo, đóng vai trò gì
trong tính cách, 821 pseudocode cho, 226 ngôn ngữ lập trình lựa chọn giao diện, tầng lớp
thành viên công cộng biến số khác, quy luật Demeter 576, 150 trừu tượng khía cạnh của, 89,
thói quen hàng ngày, lẩn trốn, 576 133 bố trí sao 138, 566-lề thói hàng ngày, di chuyển, 575
refactor mảng này chỉ tới 754, cuộc gọi tới các lớp học, nhân tiện refactoring, 575, 48 bài tập
bài phát biểu sao 138 gắn bó về khả năng thao tác với nhau, 48 continuations, 758 tới mức độ
nhất quán trừu tượng, hiểu ngôn ngữ, bắt đầu-end hiệu suất từng cặp, 743 742-135-136, 600-
601 của các dòng trống, 737, 7 47-748, so với di sản của cháu, phái đoàn nhập không hợp lệ.
Thấy khối hợp thức hoá phong cách 738-refactoring 743, 576, lặp lại, mã. Xem cũng bị va
chạm, cách 734 vòng lặp, 743 740-ghi nhận, 713, 810 có foreach những vòng lặp, 367, 372 C+
+ tác dụng phụ, 761 759-xói mòn dưới sự sửa đổi dữ liệu lặp đi lặp lại, 255, 773-danh mục 774
vấn đề sao 138 iterator những vòng lặp, được định nghĩa, 367 các lớp học, 768-trừu tượng của
việc đánh giá 771, 135 Iterator mô hình này, 104 liên quan gần tuyên bố các lớp học, có cấu
trúc refactoring phần mở rộng khái niệm lập trình, 755 nguyên tố 756-với 576, của, 9306456 -
9303425 bình luận, 766 763-formalizing như những hợp đồng, 106 accelerated innovation)
trong phát triển các biểu hiện phức tạp, ví dụ, sự lựa chọn lấy thông tin tốt, lý do cho 35-36 749,
750 133--đối chứng tại 134 tinh chỉnh, 850 mã tính nhất quán yêu cầu 735
Z02tôi619670.Trang 901 ngày thứ Tư, fm Ma thứ tư, 12, năm 2004 12:23 PM 12:23 PM
cấp hàng đầu cuối cùng những vòng mục
tiếp tục phát biểu này, 754 901-758 tới mục tiêu, 81 leanness thiết kế loại bỏ việc thử nghiệm,
kiểm soát bài phát biểu continuations dư thừa, pháp lý để ý, 811 610 611-này rộng 757 độ dài
Tên biến, phạm vi, tần số, thử nghiệm tối ưu - điều kiện theo thứ tự, kiểm soát phong cách cấu
trúc tương đương $ 745 752-262 613 612-tuyên bố, 763 761-mức thiết kế nhân dạng, 39 334
587, 733 quy tắc suy luận logic kinh doanh, 85 bố trí của hệ thống con, 753 tài liệu hướng dẫn
trong mã, 766 763-các lớp học, sự chia thành, 86 đánh giá, 615-lười biếng 616 dấu vết hướng
về bên nào bắt đầu-end gấp đôi đôi cơ sở dữ liệu, hệ thống con, 85 tra truy cập bàn, thay thế,
với 747 746-tổng quát về, 82 614-615 loài thuần chủng dãy nhà, 740 mô phỏng-gói 743, 82-85
trong một thời gian ngắn mạch điện đánh giá, bố trí endline, 743 610-tương đương $ 745, 752
751-lề thói hàng ngày, 86-87 vòng lặp, 756 continuations cuối các-phần mềm này rộng 757, 82
bất thường, hệ thống tập tin kháng Work Registration, trong vòng, 771-773 hệ thống con, 82-85
trụ với, 387-cơ bản của Fermat của hệ thống DEPARTMENTOFSOCIALSERVICES PUB 388
hệ thống con dependencies, thi thể của, xử lý, 375-Chương 376, đang định dạng, 732 85 gotos
DEPARTMENTOFSOCIALSERVICES PUB 388, 750 751-giao diện người dùng, 85 giai tầng lợi
tức được khuyến nghị sử dụng hệ thống con, báo cáo không hoàn chỉnh, 754 375 755-c thae°
viá"‡n mã, phá vỡ Lời nói, kháng Work Registration-372, canh lề, 737, 717 mục đích của
số 379 đã vào-380, 381, 768 chức năng sử dụng giao diện từ, danh mục,
DEPARTMENTOFSOCIALSERVICES PUB 388-222 389 điểm then chốt, 775 thư viện, cuốn
sách. Thấy phần mềm mã- tinh chỉnh, 624 616-ngôn ngữ-các quy định cụ thể, sự phát triển
tương đương $ 745 bình luận của thư viện, 804-lô-gic, 753 805 các biểu hiện các mô hình vòng
đời xét nghiệm hoàn chỉnh, vị trí của, 368 cấu trúc, và phản xạ, logic 732, các hoạt động tốt bàn
cho, 31-32 simplifying hợp chất, tù nhân thứ 621. 623-735, phát triển, 813 liên tục và đánh giá
chuẩn những vòng lặp, ví dụ, không đẹp lắm 732 731-liên quan lists 367. Còn thấy trong khi
những vòng lặp gây hiểu nhầm ví dụ, xóa bỏ thụt lề chiêu, 330 continuation nét, 733 732 này
rộng 757-châm, 327 nút-tiếp tục phát biểu này, số 379 đã vào 329, 380, 733, chiêu lấn lướt gây
hiểu nhầm lẫn nhau, hoạt động của 381, sửa đổi sự định hướng, 736 cho 325 đếm những vòng
lặp, 367. Xem cũng cho nhiều lời tuyên bố trên mỗi dòng linkers, những vòng 716, 758 tới 761-
vải băng, 557 công cụ vượt qua nói, số 383 ví dụ tiêu cực, 730 731-Liskov nguyên tắc thì việc
(LSP), được định nghĩa, các mục tiêu của 367, 735 736 144--thiết kế, quá trình cho 145, 385-
387, 738 cho lists dấu ngoặc làm những vòng lặp, với 369-Đại Bàng 370 chiêu, C++, 763 của
danh sách kiểm tra, xxix-xxx trống rỗng, tránh, 375-Chương 376, 738 kiểu khối tinh khiết 740-
những số liệu, xxxiii dài vô tận những vòng lặp, 367, 374, 735 của mục tiêu dễ đọc bàn, xxxi-
xxxii endpoint loại, khía cạnh của tôn giáo, 735 nghĩa đen dữ liệu, 297 298-, dụng 308 trẻ em
trong 381 lên đến 309-382-tài nguyên, 774-775, 13 bước vào các chương trình thông thạo về,
các hướng dẫn, 373 375-tranh luận đó, 754 thói quen, thời gian sống của biến số 246-248, là
459 $ thói quen gọi continuations DEPARTMENTOFSOCIALSERVICES PUB 388, 756 thời
gian nạp kết trong, 253 loại được đánh sốstyle name, thói quen 305 hướng dẫn cho, 766-
hattrick lối ra các nguyên tắc hướng dẫn, 768 với 369-372, tự mã ghi nhận, 781 778-kiến trúc
điều căn bản đó, 48 377 nhân công-381, 389 đơn bài phát biểu dãy nhà, 749 748-loại dữ liệu,
298 dây cho những vòng lặp, 372, 378, 374-bài phát biểu, 754 continuation-758 tới khoá dữ liệu
toàn cầu, 341 733, 746 732--tuyên bố với 747 độ dài, 753, 632 634 logarithms-foreach những
vòng lặp, 367, 372, quan trọng của các cấu trúc, đăng nhập hợp hạch, 617-618 trong số 733
734-quy cách lập trình phòng thủ, với, kiểu dáng kháng Work Registration tá"›i khái quát,
738 210 làm phát phát biểu này, Volume 376 unindented bắt đầu kết thúc từng cặp, 746-công
cụ để thử, chỉ số 526, 377 nhân công vi phạm chỗ đất lún bình luận của, 801 logic, thử nghiệm,
bảo hiểm danh mục, chỉ số ở 506 389 Visual Basic phong cách ngăn chặn, 738, chỉ số 170 gắn
bó về logic giá trị cuối cùng, 377 nhân công da trắng, 378-732, 737, 736-lô-gic biểu cảm. Xem
cũng chỉ số tên biến lôgíc, có 265 753 754-biểu hiện phạm vi, chỉ số 383-384 lười biếng, mã
830 tinh chỉnh, 610 616-vô hạn những vòng lặp, 367, 374, 615-đánh giá lười biếng 616 so sánh
614 hành,

Z02tôi619670.902 trang hôm thứ Tư, fm Ma thứ tư, 12, năm 2004 12:23 PM:23 PM
902 12 đầu tiên từ trên mục cấp loose chẽ
những vòng lặp, tiếp tục nêu rõ, 183 quốc gia thành viên, 278 277-sơ khởi mã để đo lường,
373, 374 dấu ngoặc với, 182-183 quốc gia thành viên lợi của, lặp đi lặp lại cấu trúc dữ liệu với
677, 255 tạp chí trên lập trình, tranh luận chống lại, 678 iterator những vòng lặp, 367, 9306456 -
9303425 859-860, 679 mục tiêu cho kẹp, 617 618-ảo thuật biến số khác, tránh, 292, 679, nhận
diện có tầm quan trọng điểm then chốt, 389 297-298, dụng 308 trẻ em trong-tài nguyên cho, lên
đến 309 679-680 loại, tổng quát, 367-368 bảo trì các tác dụng phụ của 678, dán nhãn phá vỡ
lời nói, 381 bình luận đòi hỏi, 788-791 chiếc bàn của các loại hữu ích Của 678, 679-ngôn ngữ
cụ thể, chiếc bàn của, 368 mục tiêu cho thiết kế, 80 chiều dài của bộ nhớ, 385 bị lỗi lề thói hàng
ngày, ưu tiên, phát hiện lỗi phân bổ cho, 206 giảm thiểu làm việc tại nhà, 620-tù nhân thứ 621
đến 518 phố tham nhũng, bằng cách cho chiêu, nhiều lời tuyên bố nghỉ dài 325, 380 dị tật bẩm
sinh, vấn đề do chấn chỉnh, nói một cách khác, 244 f bởi chất làm đầy biến số 382-số 383, 464
maintainability được định nghĩa sơn vào làm việc, 244, 382 lồng nhau-số 383, 385, 623, 842 lợi
ích gì cho khả năng đọc chúng tôi đặt cái máy nghe lén hiệu suất hoạt động null phát biểu này,
viết lại nó, cấu trúc 445, 323 trong việc giảm tác động, có 599 ra khỏi người một lỗi, 382 381-
ТРЕБУЕТСЯ ЛИ КРУПНОЕ СТРОИТЕЛЬСТВО chiêu, tham nhũng bởi các hoạt động, một-
quy cách chức năng cho 325, Volume 376 danh mục, 69-70, 527 công cụ cho lệnh của lồng
nhau, 623 quản lý việc xây dựng sự tư vấn hiệu suất 482 loại, cách tiếp cận là 599 $. Thấy tiếp
cận để trộn công cụ, 712 chiêu bên trong, 620 phát triển phần mềm ẩn dụ, vấn đề với, tổng
quát về 373, thay đổi kiểm soát. Thấy accreting cấu hình một hệ thống, 15-pseudocode 16,
385-phương pháp quản lý 387 sử dụng dựa trên thuật toán, 11 refactoring 12, 565, 573, thái độ
của quyền sở hữu, 663 mã tòa nhà ẩn dụ, 16- 19 lặp lại cho đến khi điều khoản, 377 nhân công
sự phức tạp, 77-79, so với các thành phần mua tòa nhà, thói quen hàng ngày trong, 385 quản
lý cấu hình. Thấy 18 quầy an toàn với, 378-số 379 đã vào quản lý việc kết hợp, cấu hình 20 quy
mô của chỉ số, số 383 384-tốt mã hóa, khuyến khích, máy tính là trung tâm, so với đầy dữ liệu
các xét nghiệm trọng yếu cho tù nhân thứ 621-623, 664, 662-ô xem kích cỡ như refactoring 11
565, Chỉ số quản lý, vai trò chậm lại, điều chỉnh, giảm sức mạnh, 623 18-chip 486 487 624-các
khám phá dựa trên, 9-10, 616 chuyển đổi chìa khóa, 688 điểm trái đất, so với mặt trời đầy quan
điểm đầy, ch¶m döt trì c¶p, làm cho rõ ràng, 377 nhân công, quản lý đã hỏi 686 10-11 cách
thực hiện kiểm tra, loại bỏ, phép đo, 680 677-ví dụ về, 13-20 610 611-các lập trình viên, điều trị,
nuôi trồng, 14-15 sẽ quảng bá những thông, 618-620 680-phát triển một hệ thống đã hỏi 686,
14-15 unswitching, 616-617 dễ đọc, 664 chuẩn dựa trên kinh nghiệm đó thì chuyện sử dụng,
biến các nguyên tắc hướng dẫn, 382 12-tài nguyên, 687 384 quan trọng của, 9-11 initializations
biến, 249 đang xem xét tất cả, 663 mã tăng dần dần, 15-16 phát triển danh mục các biến số
389 thưởng cho các hoạt động tốt, 664, Chìa khóa điểm cho cách thức mà, 21 ch¶m döt trì c¶p,
377 nhân công, lịch làm việc ước lượng, 677 671-mô hình sử dụng cho, 9 trong khi những vòng
lặp, 368-với 369 Signing off trên 663, overextension mã của, 10 loose chẽ kích cỡ của các dự
án, ảnh hưởng của. Thấy con hàu kích cỡ nông nghiệp, 15-16 mục tiêu thiết kế, như, 80 con
lắc ví dụ, dự án 10 chiến lược để, 100-102, quyền lực để đặt tiêu chuẩn, sức mạnh của 10 662,
thấp để- medium người hâm mộ mục tiêu, tiêu chuẩn thiết kế, IEEE 687, 814, khả năng đọc, 13
81 đội cho hai người, 662 người thâ đến Mĩ của, 10, 11 LSP (Liskov nguyên tắc), thì việc di
chứng dị tật bẩm sinh từ, 787, đơn giản, so với các cấu trúc phức tạp, 144-matrices 145. Thấy
16-17 am tường chỉ kiểm soát môi trường công nghệ, kích cỡ của các dự án, 19 67 ném một đi,
13-14 m bình thường các cấu hình, tối đa phương pháp chiếc hộp đó, 20 Macintosh hiệp định
nêu rõ 275 độ sâu 515 sử dụng, 11-12 macro lề thói hàng ngày. Thói quen xem cũng mê cung
ví dụ, đệ quy lên đến 394 người-thuận là 396 viết ví dụ, 13-mã 14, bao gồm 184 McCabe giải
pháp thay thế cho sự phức tạp là thước đo, 457, 657, 659-hệ phương pháp. Xem cũng giới hạn
cho, bao gồm 184 458 tiếp cận để phát triển nhiều lời tuyên bố trong dự luật này 2 lần, 183
quốc gia thành viên, cắt một lần, phương pháp 23. Thấy lề thói hàng ngày

tôi61967002Z.903 trang hôm thứ Tư, fm Ma thứ tư, 12, năm 2004 12:23 PM 12:23 PM
cuối cùng mức độ hàng đầu đối tượng mục 903
thước đơ phóng viên, 714 điểm then chốt, 89 CLERK tái thiết kế, 453 bình thường các cấu hình
tối thiểu, loại thông tin trong cái tên, đơn giản bằng cách retesting độ sâu 515 277, 445-446
điều kiện cho nhiệm vụ rất quan trọng trong hệ thống, 31-32 ngôn ngữ đơn giản hoá độc lập với
phá vỡ-lô đất, trộn-môi trường, 276 ngôn ngữ các nguyên tắc hướng dẫn, 272-274 446-mixins
447, 149 lên, không giới hạn, chiều dài 171 tóm lược của những kỹ thuật chế nhạo các vật thể,
523, 275 giảm thiểu Macintosh 453-454 khuôn, các ẩn dụ là. Thấy trong cái tên, ý nghĩa quá, có
quá nhiều cấp độ tương tự của, 445-454 phần mềm ẩn dụ, 285 người điều phối những vòng lặp
lồng nhau đóng vai trò gì trong chậm lại, chip 486 gây hiểu nhầm tên, thiết kế, 382 285-số 383,
385 mạnh tính môđun sai chính tả từ, 286 đặt mua cho hiệu suất, mục tiêu của thiết kế 623,
107 pha-ngôn ngữ nondeterministic loại, bản chất của thiết kế các biến số toàn cầu, thiệt hại từ
276, quá trình đó, 76, 87 337-338 ngôn ngữ tự nhiên nhiều, tính năng ngôn ngữ nonstandard 2-
0-0, 98 xíu, đôi vậy loại, con số, phân tách dựa vào đối tượng vô giá trị, refactoring, 573, 100-
102 171 null lời nói, 444-445, 148-di sản đa 149 lên trên cái que, con số 286, nghĩa đen, 292
nhiều trở về từ thói quen hàng ngày,, sử dụng bao hàm, 172 quốc gia loại dữ liệu thểname 391
ppm (parts per million tham số 393, 178-BCD, 297 tập tin đa khả năng tìm kiếm, phonic chuỗi
abbreviations, danh mục, 316 bé ở 711 283-tiền tố 712, 279-tiêu chuẩn hoá 281, 293 cảnh báo
bá"™ biãªn dá"‹ch quy mô tả, So sánh 172 quốc gia, vào lúc 8h-442 giảm lợi thì
conversions triển khai vũ khí, cho thấy, 293 N chi phí hoạt động 270, 602 tên là hằng số. Soạn
Hằng số quy cách phã¡t âm, thấy 283 tuyên bố, 802 F, hiệp định bình luận của mục đích của
270, âm 271 điểm floating--loại, 295-297, "một" tiền tố Công ước, 272 dễ đọc, 274 316 bé ở,
602, 282 abbreviating tên-285, nhấn mạnh của các mối quan hệ, âm 271 mã hóa 0s và khó 1s,
viết tắt là gợi ý, 282 292 tên dành riêng, integers 2-0-0, 293-295 trụ, 280-281 lề thói hàng ngày,
171-số 173, 222 nghĩa đen, tránh, con số 292 lợi ích của, 270-âm 271, 280-quan trọng lắm về
ngữ nghĩa 281 ảo thuật, tránh, con số 292 ngôn ngữ C, 275, 278, 282 tên ngắn-285, 288-phạm
Đoạn 289, rất khác biệt, đã đánh giá trận C++, 275-277 độ đều đặn của tên, quá nhiều các hoạt
động, với giá trị vốn hoá 295, 274, 286, 285 trộn kiểu so sánh 293-trường hợp-ngôn ngữ vô
cảm, khoảng cách 273 nhân vật, l^n', 293 274-295 nhân vật, khó đọc, t_ tiền tố 2-0-0 Công
ước, 272 trong phạm vi của integers, tăng lên 294, 288-danh mục phạm Đoạn 289, 780, 283,
sử dụng các từ điển đồng nghĩa 0, Chia bởi, 292, 273 biến thành viên lớp loại biến số tên, lớp,
so với đối tượng, so với cái tên, 272-273 272 273-hoạt động chung, cho, 172 quốc gia-số 173
abbreviations UDT, 279-O
hằng số, 273 280-274 biến số khác, cho. Thấy tên biến mục đích này, chất lượng, 466 phần
mềm, xuyên lợi ích, dự án 270, 278 Visual Basic-279 468 469-descriptiveness bản hướng dẫn,
171 khi sử dụng, âm 271 hướng đối tượng tài liệu hướng dẫn lập trình, 284-285, nếu c¥c léi
khai thông tin đang trốn lồng nhau. Thấy 778-780 trường hợp phát biểu này, chuyển đổi qua,
đang trốn được đánh sốstyle name loại thông tin, năm 269, 274, 449, 451 448-di sản của cháu.
Thấy 277 di sản-279 chuyển đổi qua nếu-thì-đối tượng khác. Thấy các lớp học; các vật thể
đúng thủ tục thôi, góc độ, báo cáo âm 271, 447-polymorphism 448. Xem tập tin, 811 như giải để
lề thói hàng ngày, 449-451 polymorphism trở lại giá trị, chức năng 172 quốc gia phương pháp
tiếp cận nguồn tài nguyên, nhà máy cho, 119, 159, 273 biến số toàn cầu, 342, 452 chuyển
sang-453 vật thể tham số-đôi vậy, 101 homonyms, 286 của các vật thể, sự phân hủy chức năng
tiếng Hungary, 279 450-451 ADTs như, 130 không chính thức, 272-279 hướng tiếp cận đối
tượng, nhận diện thuộc tính, 88 tham số đầu vào, chuyển đổi qua, 452 274-453, 276, 277 Java

Z02tôi619670.904 trang hôm thứ Tư, fm Ma thứ tư, 12, năm 2004 12:23 PM:23 PM
904 12 đầu tiên từ trên mục cấp mẫu
vật thể, tiếp tục quan sát được định nghĩa, 483, 333 Locust lớp tham số đi qua cái tên, từ, chưa
có kinh nghiệm đôi thành thạo, 484 272-273 mẫu hình điểm then chốt, 497 lợi của, 103-104 các
lớp học, để tốc độ, 86 contrasted khớp, 483, các giải pháp thay thế cho rằng bằng cách kết thúc
chuyện, nhận dạng, 103, tính cách xung đột, 484 88 thông tin liên lạc, 104 đang xoá các vật thể
lợi ích, Tài nguyên, 496 206 giảm sự phức tạp với phương pháp, nhà máy, 103 103-104, đang
xoay 483 thành cặp, thiệt thòi của 105 452, 453, 577-lãnh đạo nhóm nghiên cứu, 484 giảm lợi
thì lỗi 103 nhận dạng, tầm nhìn của màn hình, 88 484 phương pháp nhà máy, 103-di sản, nhận
dạng 104, 88. Xem xem, 483 tài nguyên để, 120 cũng di sản của cháu khi không phải dùng đến
483, chiếc bàn của, 104 giao diện, thiết kế, 89. Xem cũng tham số của thói quen hàng ngày đầu
tiên người sắc thái. Thấy khả năng đọc giao diện, tầng lớp và hiệu suất đối tượng appraisals
trừu tượng, các hoạt động 487, nhận dạng, tham số 88, hiệu suất $ 179 điều chỉnh các tham
số, sử dụng như $ 179, 574, thực tế, man tương ứng chuyên nghiệp, thuật toán sự lựa chọn,
590 180 được bảo vệ các giao diện, thiết kế, language (‫ )٭‬Công thức cho chiêu, kiến trúc điều
căn bản đó, 48 89 334-trụ, 593 335-594, 603-lòng dời lại, so với các thành viên tư nhân công
cộng, hành vi sự lệ thuộc vào danh mục 574, 607, 608-thiết kế, 89 bởi, so với giá trị bởi tham
khảo, mã điều chỉnh cho 333 Locust. Mã thấy điều chỉnh thế giới thực, việc tìm kiếm, 87-89
danh mục cho, 185 bình luận, những tác động, 791, 574-576 refactoring C-trật tự, thư viện 175
tình thế khó xử, tham khảo các mục tiêu có tính cạnh tranh với các vật thể, 574 806,-807 bình
luận của Federal 595, 605, cho cậu ta vào nhóm để, trách nhiệm của Const Kaplinsky tiền tố,
106 176, thứ 177, 274, 590, những lý do bá"™ biãªn dá"‹ch singleton dưỡng, tài
sản, 151, 349, dependencies đã làm rõ 597 596-bước trong việc thiết kế, 87-89, sự đúng đắn
về 178, tài liệu hướng dẫn quan trọng của mô hình, Hoa tiêu, 104 loại được đánh sốstyle name
cho 303-Federal 595 596, ra khỏi người một lỗi biến số lỗi 176 phụ lục, 601 cơ sở dữ liệu kết
giới phân tích, 513-phòng số 514 đấy, man tương ứng chính thức thực tế, 180 trong mã, 601 dị
tật bẩm sinh sửa, tiếp cận tới, nói một cách khác, các biến số toàn cầu, 336 DES ví dụ cho 605,
606-đợt tấn công lập trình, các hướng dẫn sử dụng 206 lề thói hàng ngày, thiết kế, 590 589-ô
xem một-vào, một-ra không đến do thao tác sai, 174-kiểm soát tính năng cụ thể, Federal 595
180 454 trong sáng tạo, từ khóa 175-phần cứng 176 loại, 590 591 hệ điều hành, đầu vào sửa
đổi-thứ tự xuất, inefficiency, nguồn, 601 598-chi phí hoạt động thông thường, 174-175 603 601
đang trốn-thông tin Java, 176-những lý do thứ 177 của, 96 bao hàm cho tên biến, kích cỡ như
refactoring danh sách 264, chỉ số đầu vào, đầu ra 598/-có 599, sinh non, 840 tối ưu hoá ". Thấy
566 hiểu thấu đáo, so với biên dịch hiệu suất điều chỉnh phù hợp với nhau thực tế cũng để
chuyên nghiệp, 180 ngôn ngữ, 600 601-cùng họ nhưnhững nhà tiên tri, phần mềm, 851, 178 F,
180, 274, 277, 278, 608, điểm then chốt từ khóa sáng tạo ra, 175-176 279 dòng lệnh, làm giảm
thiểu số overengineering 51 số, giới hạn, 178, 593 của-l^n' 594, 293, 295-số nguyên vật thể, đi
ngang qua, thì đo của, 603 $ 179-lòng dời lại phủ linkers 716, để, 174-176, so với các hoạt
động tập tin bộ nhớ, overridable lề thói hàng ngày, 145-phát hiện được 146, 156 ra từ khóa
được tạo ra, 175 176 598--có 599 con hàu canh tác phép ẩn dụ, 15-16 đi ngang qua, loại, 333
Locust mấy câu chuyện cũ, 596 593-refactoring, 571, 573 loại, hệ điều hành, tình trạng 176 590
cấu trúc như, 322 P, chi phí cho các hoạt động bình thường, các gói, 156 157-sử dụng tất cả
các quy tắc, 176 603 601-hoạt động, có 599 biến chúng tôi đặt cái máy nghe lén, sử dụng, 176-
tổng quát về thứ 177, 643-rất tốt. Đôi lập trình Visual Basic, chúng tôi đặt cái máy nghe lén hoạt
động, có 599 180 lợi ích của, 484 dấu ngoặc, luận điểm 840 tối ưu hóa cỗ sinh non, cân bằng kĩ
thuật mới, 437 484 438-phương diện về các tiêu chuẩn và mã hóa hỗ trợ cho bố trí 483, 738,
589 với so với các cộng tác, Pareto nguyên tắc, mục đích của 592, 587 496 495-

Z02tôi619670.905 trang hôm thứ Tư, fm Ma thứ tư, 12, năm 2004 12:23 PM 12:23 PM
điều căn bản đó, cuối cùng cấp hàng đầu ngược dòng 905 mục
(khai báo con trỏ biểu tượng), sizeof (), 335 viết pseudocode bước, 332, 334 335, 763-thông
minh, 334 223-224 (con trỏ tham khảo & biểu tượng), chuỗi hoạt động ở 332, 299 từ lâu, C
nghi ngờ, 733 - (hai dấu ngoặc nhọn (biểu tượng), 328 con trỏ tuyển diễn viên, tránh, kiểu 334
tiền đề địa chỉ của 323, năm 326 biến này, bằng cách kiểm tra, 1999-2008, thói quen với, thiết
kế 221 phân bổ, năm 326, 330, 331 năm 326, 192-193 verification các giải pháp thay thế Phải,
332, tiêu chuẩn hoá của polymorphism quan trọng lắm, chức năng như giá trị trở lại, 182
trường hợp phát biểu này, thay thế với, 279-281 language (‫ )٭‬quy định, 334-147 335-148, 840
tối ưu hóa cỗ sinh non_ptrs tự động, 333 Locust được định nghĩa, 92 để chuẩn bị. Thấy điều
căn bản đó, ranh giới, 527 công cụ kiểm tra có đặc trưng của ngôn ngữ luật lệ, 156 ngược dòng
C ngôn ngữ, 334-335 lồng nhau nếu, chuyển đổi qua, 452-453 preprocessors C++ ví dụ cho
325, 328, 334, các biểu hiện polynomial-631 632-C++, 207-C++ hướng dẫn 208, 332-334 gỡ lỗi
aids có tính di động, xóa bỏ với, kiểm tra trước khi sử dụng, năm 326, 331 loại dữ liệu, định
nghĩa cho, 315-316 bé ở 207-danh mục cho, 344 208 được định nghĩa, mục đích của 718 464,
719-so sánh với, 441 duy trì thói quen, 165, 208 mục lục, viết diễn đạt được, postconditions
điều căn bản đó, ngược dòng 324-thói quen với, thiết kế cho 325 221 phép loại suy luận cho
27-28, yểm trợ duy trì thói quen, 331-332, 192-verification 193 công trình kiến trúc. Thấy kiến
trúc nguy hiểm của, 323, cho 325 (Pseudocode PPP sếp sẵn sàng kiểm tra, lập trình 30-31 loại
dữ liệu chỉ ra, 324-quá trình dài 325) Cho 59 deallocation danh mục của, năm 326, 330, 332,
223, nghiên cứu các thuật toán ‫ ٭‬mã chất lượng gây ảnh hưởng lên, 588 gỡ lỗi aids, 208-209
để, vệ sinh phụ nữ mất đến 232-thứ 233, 590 mục tiêu tài nguyên cho họ tuyên bố, cho 325
năm 326, 763-kiểm tra lỗi thêm 230 231, 606, 607-tài nguyên đang xoá, 330-331, 332 danh
mục cho, thứ 233-thói quen, số 234, 165, 222 thiết kế-223, diagramming, 329 Plan Comment
bước, mất đến 232 590 con chó cánh đồng, thẻ năm 326 327-mã hóa bên dưới những lời bình
luận, tốc độ, quan trọng của Federal 595-596, gõ của, rõ ràng mới 334 hết 227-229 tóm lược
của phương pháp cho 606, rõ ràng những cánh đồng, 327 dư thừa mã hóa lề thói hàng ngày,
225-từ 229 gọi hệ thống, có 599-600 biến số cho sự rõ ràng, thêm cấu trúc dữ liệu cho 224 vấn
đề thời gian, thói quen hàng ngày, lòng dời lại 327-tuyên ngôn từ, 226 329 người dùng Nhìn về
mã hóa, các hoạt động với thói quen hàng ngày 588 đang trốn, được định nghĩa, khi bắt sóng,
218 596 165 việc thiết kế lề thói hàng ngày, 220-225 periodicals trên lập trình, đang khởi động,
241, 244, cho 325-lỗi xử lý năm 326 loại, 859-860 địa chỉ diễn đạt được 222 Perl, 65 mục lục,
324-ví dụ cho thói quen hàng ngày dài 325, 224 sự nhất quán của biến số 251-252, đang tách
hoạt động của, chức năng cho 325 từ thư viện, 222 831 điểm then chốt, đầu trang 344 bình
luận cho lề thói hàng ngày, tính cách cá nhân. Nhân vật, ngôn ngữ không thấy cung cấp, 323
223 danh sách liên quan, đang xoá cá nhân trong, 330 cấp cao những lời bình luận từ,
perturbers. Hệ thống định vị perturbers thấy trong trí nhớ, 323 226-hết 227, 691-tích hợp từ giai
đoạn bộ nhớ tham nhũng, 692 bằng cách cho 325, 225 327-iterating phonic abbreviations tên,
bộ nhớ nhảy dù ý nhỉ, 330 283 điểm then chốt cho, PHP (PHP siêu văn bản, số 234 Cpu), 65
tuổi, null thiết lập, sau khi xóa bỏ 1, 330 F, 222 600 null lề thói hàng ngày, sử dụng những cảnh
báo, hiệu suất 849 loại, môi trường vật lý cho bộ nhớ cài đè lên bằng phế, 222-lập trình viên,
684 223-685 330, 221 phần kế hoạch điều căn bản đó của 323, vấn đề định nghĩa, phép loại
suy luận cho 221, 27-28 đi ngang qua tham khảo, 333 Locust refactoring, 229 tòa nhà ẩn dụ
cho, 18-19 này chỉ tới, C++, 332 loại bỏ các lỗi, 231 cãi cọ trong dữ liệu, 28-30 nguồn tài
nguyên cho 343, lặp đi lặp lại, mất đến 232 các hoạt động tốt bước bàn cho, 31-32 an toàn_
duy trì thói quen, 331-332 chấm điểm pseudocode, 224-lô-gic 225 lý luận, 27 simplifying phức
tạp bước Mã, 231 qua các biểu hiện chiêu, 329 thử nghiệm, 222, 231 mã
Z02tôi619670.fm Dần 906, thưa cô hôm thứ tư trang hôm thứ Tư, 12, năm 2004 12:23 PM
12:23 PM
dần 906 mục cấp trên đầu tiên về nguyên tắc cơ bản của sự gần gũi với
điều căn bản đó, ngược dòng, tiếp tục các lập trình viên, nhân vật của. Mã thấy thư viện, 717
chọn giữa lặp đi lặp lại và đặc tính mã cá nhân, tinh chỉnh, 720 đến gần, 35-nối tiếpstencils 36
lập trình viên, điều trị. Xem cũng thế hệ mã wizards 718 mã hóa quá sớm sai lầm, 25 đội quá
tường tận đến nổi, 716 cuộc tranh luận cho, 27-31, 680 khái quát về hãy đánh dấu những công
cụ, 713 cãi cọ trong dữ liệu, 28-30 môi trường vật chất, 684-dữ liệu từ điển, 715 685 lỗi phát
hiện, làm sớm, bí mật trong văn phòng, công cụ, 526 684 việc gỡ lỗi-527, x545, 29-30 vấn đề
tôn giáo, 683 684 558-Mau ra tuyến 559... và dứng, 719-mục tiêu, 25 tài nguyên, 685-đã hỏi
686 ca rô, 716 phụ thuộc các hoạt động tốt bàn cho, 31-32 vấn đề kiểu, 683-các công cụ thiết
kế 684, 710 quan trọng của thời gian, 24 allocations, công cụ, 712 681 Diff chuẩn bị chưa hoàn
chỉnh, nguyên nhân, sự thay đổi trong hiệu suất, tháo rời xuất sắc, 720 25-27 681-683 công cụ
sửa, 710 713-lặp đi lặp lại và nhưng, các hiệp định lập trình nối tiếpstencils khả năng thực hiện
công cụ mã, 716-720 34-35, 66 hành hình chọn cvs frontendcomment công cụ, 720 phương
pháp với, lặp đi lặp lại 28, 33-34 danh mục các hoạt động mã hóa, fantasyland 69, 722 723-
Chìa khóa điểm cho 59-60 đang định dạng luật lệ. Bố trí xem các công cụ thiết kế đồ họa, 710
dự án kiểu, 31-33 vào ngôn ngữ lập trình, grep, 711 lý luận logic, 27 68-69, 843 ý tưởng tồi, 710
711-ngu dốt, vấn đề trình quản lý 26 ngôn ngữ lập trình lựa chọn, 713 vấn đề tài liệu hướng
dẫn giao diện định nghĩa, 36-38, 63 điểm then chốt Adalanguage 725, phát triển các yêu cầu.
Thấy ngôn ngữ, 63 linkers lắp ráp, các điều kiện 716 cơ bản, 65, 712 công cụ trộn mục tiêu
giảm nguy cơ, 25 C, 64 thước đơ phóng viên, 714 khả năng cần thiết cho sự thành công, 25 C#
Language, 64 đa chuỗi tìm kiếm, thời gian tập tin cho phép, 55-56 C++, 64 712 711-yếu đuối,
26 Tập đoàn Cobol, hội chứng preprocessors 64, 719 718-WISCA 26 expressiveness hội
chứng Down, các khái niệm, 63 công cụ đặc trưng cho dự án, 721-722 Về nguyên tắc cơ bản
của sự gần gũi, 242 317, 351, so với thân quen quen thuộc, mục đích của ngôn ngữ, 709 người
dữ liệu riêng tư, 148 62 phân tích chất lượng, 713-714 vấn đề-định nghĩa điều căn bản đó, 64
refactoring, công cụ Fortranlanguage, 714 715-36-38 cao- thấp hơn, so với ngôn ngữ lập trình
cấp cao tài nguyên, 724 vấn đề miền, lập trình tại, năng suất, 62, 715 công cụ tái cơ cấu 847
845-quan trọng của, 61-63 tập lệnh, 722 phát triển kỹ năng giải quyết vấn đề mà, Java, 65
semantics ca rô-823 713, 714 JavaScript, 65 công cụ mã nguồn, 710 715-gắn bó về buổi, 170
Perl, 65, 713 ca rô-cú pháp 714 thủ tục. Thói quen xem cũng PHP 65 713 mẫu, nêu rõ các
hướng dẫn, năng suất từ 62, 172 quốc gia thử nghiệm công cụ, 719 khi sử dụng, 181-vào ngôn
ngữ lập trình 182, môi trường hướng công cụ, quy trình, phát triển. Thấy 68-69, 843 720 721-
tiếp cận để phát triển Python, 65, 715 người dịch có tỷ lệ c¥c léi khai năng suất so với phiên
bản công cụ kiểm soát, C 715 tác động của mã, xây dựng tốt chiếc bàn của các kiểu dự án, 62
tuổi, điều căn bản đó luyện tập, 7 SQL Server, 65 tương ứng với, 31-33 trung bình, ngành công
nghiệp 474 suy nghĩ, những tác động, được bảo vệ dữ liệu, 148 63 kích cỡ của các dự án,
những tác động 653, Visual Basic, 65 bản mẫu, 114-sinh nhật thứ 115, 468, 824 phát triển
chuyên nghiệp-bán kính 825 công cụ lập trình sự gần gũi với nguyên tắc,, 242 317, 351, 862
các tổ chức chuyên nghiệp hợp ngữlanguage liệt kê các công cụ, 720 chương trình beautifiers
pseudocode dòng chảy, thuật toán 712, nghiên cứu 223 kiểm soát. Thấy cấu trúc xây dựng
công cụ kiểm soát, 717 716-xấu, ví dụ về, 218-219 liên tiếp. Thấy dòng thẳng tòa nhà mã riêng
cho mình, 721-lợi ích từ 722, 219-220 chương trình, công cụ prerequisite tổ chức vụ, thay đổi,
hiệu quả của 710, 220 45-46, 724-725 danh mục kiểm tra lỗi, thêm 230 231 chương trình kích
cỡ. Thấy kích thước của lớp-phân cấp máy phát điện dự án, danh mục cho 713, PPP thứ 233-

Z02tôi619670, số 234.Trang 907 ngày thứ Tư, fm Ma thứ tư, 12, năm 2004 12:23 PM 12:23 PM
mục cấp hàng đầu cuối cùng refactoring 907
các lớp học, bước trong việc tạo, 216-217 phần mềm understandability chất lượng, 465 mã hóa
bên dưới những lời bình luận, độ chính xác, 464, 463 tính khả dụng hết 227-229, 464 thích ứng
khi làm việc đảm bảo, 473 mã hóa từ, 225-229 thay đổi thủ tục kiểm soát, những lời bình luận
từ 468, 220, 791, 476 danh mục kiểm tra của cấu trúc dữ liệu cho lề thói hàng ngày, 224 xây
dựng mang tính hợp tác. Thấy R
tuyên bố từ, 226 cộng tác các dữ liệu ngẫu nhiên máy phát điện,
được định nghĩa sự đúng đắn về 218 525, 463, khả năng đọc
thiết kế lề thói hàng ngày, 220-225 hơn để tìm chi phí dị tật bẩm sinh, 472 như tiêu chuẩn, 664
quản lý việc xử lý lỗi loại, chi phí sửa dị tật bẩm sinh, 472-473 dị tật bẩm sinh thiếu, 538 vạch
trần
222 gỡ lỗi, vai trò của, 474-536, được định nghĩa, khoảng 475 464
cho lề thói hàng ngày, chẳng hạn như 224 của phát hiện dị tật bẩm sinh bởi nhiều cấu Hình
cho.
Chức năng bố trí xem từ thư viện, kỹ thuật, chiếc bàn của 222, 470 ca quan trọng của, 13, 841-
843
tốt, ví dụ về, 219 quá trình phát triển việc đảm bảo bảo trì hưởng lợi từ 842,
các hướng dẫn sử dụng hiệu quả, các hoạt động, 467 218-f 468 biến số cho. Thấy đầu trang
bình luận cho những tên cướp biển đều thông thạo lề thói hàng ngày, năng suất, 464 quy ước;
tên biến
223 467 chỉ dẫn kỹ thuật ảnh hưởng tích cực từ 841,
cấp cao những lời bình luận từ, hoạt động rõ ràng mới cho 466, riêng tư và chương trình công
cộng, 842
226-hết 227 giám định, 467 bên ngoài phát triển,
lặp đi lặp lại chọn lọc chuyên nghiệp, 219, 225 đặc điểm của, bên ngoài trọng, chìa khóa phòng
825 điểm cho việc tạo ra, 463, số 234-cấu trúc 464, quan trọng của
vòng lặp, thiết kế, 385-387 Lập trình cực đoan, higher education-f 734 733 472-lề thói hàng
ngày, 222, 464 linh hoạt cảnh báo, như một,
hiệu suất 849 loại, Gates, 467 đọc như một kỹ năng, 824
222-223 quy tắc tổng quát về kế hoạch cho phần mềm đọc phần mềm
PPP. Thấy chất lượng PPP, 474-khoảng 475 các nhà phát triển, 860 862-
điều căn bản đó, 221, 464 tính toàn vẹn, 572 refactoring records,
định nghĩa, vấn đề nội bộ đặc điểm, 464 221 465-
refactoring đệ quy, 229 điểm then chốt, các giải pháp thay thế cho 398, 477
, 224-225 chấm điểm maintainability, 464, 410
lề thói hàng ngày, luận điểm bước trong việc tạo, 217, đo lường kết quả, được định nghĩa, 393
468
223-224 nhiều khuyết điểm factorials phát hiện đang sử dụng, 397 gram-
thử nghiệm, lập kế hoạch cho 398, 222, con số Fibonacci được khuyến nghị sử dụng các kỹ
thuật sử dụng,
quá trình lập trình Pseudocode. 470 ca-higher education 397 gram 398-
thấy các mục tiêu PPP, thiết lập, 466, 468, 469-các hướng dẫn lên đến 394 người
khoảng cách tâm lý, lý tưởng là 556, 465 xung đột tối ưu hóa cỗ-466 điểm then chốt, tâm lý trí,
554 410-gom từ 555 tỷ lệ phần trăm của mê cung ví dụ, lên đến 394 người khuyết tật-thuận là
396
các yếu tố tâm lý. Thấy đặc tính, đo lường, 469-quầy an toàn cho 472, thuận là 396
, 464 có tính di động cá nhân bản hướng dẫn, thói quen đơn thuận là 396
, 567 thành viên dữ liệu công hiệu suất, xếp ví dụ lập trình viên, 393-lên đến 394 người
phong cách bố trí khối tinh khiết, 740 738-các mục tiêu, 468-469 dựa stack không gian mối lo
ngại này, 397 gram
Python, nhưng sau vụ tắm máu đêm qua, 468, nguyên mẫu,
mô tả về, 65 thuận là 396, 464 dễ đọc
các vấn đề hiệu suất của refactoring, được khuyến nghị sử dụng kết hợp cho 600, 582,
473 80/20 quy tắc thêm vào lề thói hàng ngày,
các mối quan hệ đặc điểm của 582, 573, thuật toán
Q-466 465 572 trụ, đảm bảo chất lượng. Còn thấy chất lượng, 464 độ tin cậy hỗ trợ mã cũ, 579
phần mềm tài nguyên cho 476 lớp hai chiều, các mối liên hệ danh mục, 70 reusability, 464 577,
các hoạt động tốt bàn cho, 31-32, 467 tái duyệt các biểu hiện luận lý, 572 điều căn bản đó đóng
vai trò gì trong robustness 24, 464, lời nói, các điều kiện 573 trường hợp danh mục, 42 43,
IEEE, 477 tiêu chuẩn, 814 danh sách kiểm tra cho 570, 577, 579-chất lượng gates, 467, 465,
467 thử nghiệm, 500 502-các trạm kiểm soát cho 580,

Z02tôi619670.Trang 908 ngày thứ Tư, fm Ma thứ tư, 12, năm 2004 12:23 PM 12:23 PM
908 cấp hàng đầu đầu tiên chỉ tới (& mục),
refactoring C++, tiếp tục tái duyệt, 580-581 quá trình phát triển lên lớp, chỉ báo, 566 gắn bó về
mức độ nguy cơ, 581 40 giao diện, 575 lớp-lề thói hàng ngày, 565 576-567, 574, 578 573-, sẽ
thải ra các dự án, các lớp học, 566 41-567, 576, 582 574-lỗi sai trong, ảnh hưởng của, 38-39
578 579, 582-quy tắc an toàn, 579-581, 584, danh sách kiểm tra, chức năng mã 42 điều chỉnh,
so với 609, Mã cài đặt, 569 568-bàn cho các hoạt động tốt, 31-32, 572 bộ sưu tập sự định
hướng, kích cỡ 580 quan trọng của, 38-39 bình luận về mã xấu, 568 bài phát biểu, 572 cấp-
573, điểm mấu chốt cho, 60, 583 577 mô- đun phức tạp-nonfunctional 578, 42 điều kiện biểu
cảm, luận điểm, các chiến lược, 582 573-hiệu suất 584 tinh chỉnh, giá trị hằng số 589 cách thay
đổi trong số 567, 575 subclasses, chất lượng, danh sách kiểm tra, 42-43 lớp con, 574 575
superclasses, tốc độ thay đổi, 563 constructors điển hình, để các phương pháp nhà máy, hệ
thống cấp 576, 577, 579-tài nguyên trên các nước đang phát triển, 56-57 577, 568 mã
takedown 569-ổn định, 39-40, 840 dữ liệu từ các nguồn không được kiểm soát, thử nghiệm,
580, 503 576 xét nghiệm để danh sách những việc phải làm cho 580, thời gian cho phép, 55-56
bộ dữ liệu khác, có liên quan, như 566, chỉ số Công cụ cho, 714 715-quản lý tài nguyên các loại
dữ liệu để các lớp học, dữ liệu, 567 572 con đĩ kiến trúc cho, 47 cấp dữ liệu, 571 572, 577-mã
xấu xí, giao diện để, 583-584 ví dụ, dọn dẹp dự án 401 402-dị tật bẩm sinh, sửa, 582 của một
chiều, hạn chế thiên nhiên liên đoàn lớp của thiết kế, được định nghĩa, 565 577 76 công cụ tái
cơ cấu, 715 mã cho tương lai cần thiết kế, xét nghiệm cho, 580 đơn vị retesting. Xem thá"- ra
há""i quy 569-biến số 570, 571 trở lại lời tuyên bố không lặp lại bản thân có nguyên tắc, cảnh
báo, bá"™ biãªn dá"‹ch, 580, 410 565 danh mục này chỉ tới (&), C++, bảo vệ
điều khoản, 392 332 393-mã trùng 565, chỉ số chìa khóa thá"- ra há""i quy điểm, 410 mô- đun bị
lỗi, 582 diff công cụ cho 524, nhiều, từ một thói quen thường nhật, sự thể hiện, 571 được định
nghĩa, 500 391 ppm (parts per million-393, 568 biến số toàn cầu mục đích của, phòng 528, 391
ppm (parts per million-392 dễ đọc dữ liệu, 576 GUI kdeprint tài nguyên cho, 408 độ tin cậy nếu
lời nói, 573 cấu tạo nên một thói quen hàng ngày, khoảng 168, 566 reusability giao diện, 576,
579 575-được định nghĩa, được định nghĩa, 464 464, 585 điểm then chốt là tôn giáo thái độ đối
với kiến trúc điều căn bản đó, 52 tuổi, 580 bước kế hoạch niêm yết lập trình REVIEWER'S
INITIALS DATE RECEIVED đóng vai trò gì trong chậm lại, chip 486 nghĩa đen, 571 eclecticism
hằng số 851, 852-tái duyệt những vòng lặp, 573 565, thử nghiệm so với việc đọc sách, 494, mã
bảo trì, 583 852 gây ra-chó... 853 và-con ngựa con cho thấy, Các lớp học, 567 495 đứng giữa
hại của 851, 853-khía cạnh giáo dục, 482, 582 việc lạm dụng phong cách bố trí trở thành, 735
mỗi dòng quy tắc, 663 mã đối tượng vô giá trị, 573 người quản lý, 683 684-chậm lại chính thức,
so với các vật thể, 574, 576-cùng họ nhưnhững nhà tiên tri, 851 485 phần mềm một-at-a-quy
tắc, báo cáo 580 thời gian. Thấy chậm lại chuyên nghiệp, chất lượng chính thức từ 467 quá tải
dữ liệu nguyên thủy, loại nhu cầu, không chính thức, được định nghĩa, 467 567 lợi ích của, 38-
39 accelerated innovation), nơi trong quá trình, song song sửa đổi required form kinh doanh
850 trường hợp, 41 refactoring thẩm sau khi chỉ báo, 566, thay đổi một số thủ tục kiểm soát,
40-41 580-tham số 566, 581, 571, 573 danh sách kiểm tra cho, 40, 42-đi-throughs 43 đã vượt
qua 492-493, bước mã hóa, PPP 229 mã hóa mà không, 26 đúng, 634 dịch chuyển dữ liệu
công khai, 567 thành viên giao tiếp những thay đổi trong, 40-41 ạnh nguy cơ hội nhập, 574 699
truy vấn completeness danh mục, 43 robustness, lý do chính đáng để không, 571 quản lý cấu
hình, kiến trúc điều căn bản đó, 51, 572 664 hồ sơ, 666 667-những khẳng định với việc xử lý,
được thiết kế lại lỗi thay vì 582, được định nghĩa, 38 194 193-đối tượng, 574 tham chiếu cách
tiếp cận với, phát triển sự đúng đắn về 41 cân đối, chống lại, tài nguyên trên 585 197, 197, 464
được định nghĩa,

Z02tôi619670.fm Phòng 909 hôm thứ Tư, thưa cô trang hôm thứ Tư, 12, năm 2004 12:23 PM
12:23 PM
mục cấp hàng đầu cuối cùng về quy mô của biến số
lỗi làm tròn, phòng 909 297 chức năng, lý do cho việc tạo ra những lý do đặc biệt, danh sách,
duy trì thói quen, 181 167-182, 229, 573 refactoring-575, 578, 145 overridable trừu tượng, đột
phá cách tiếp cận thứ 233 582, trừu tượng, đầu trang 164 bình luận lợi ích cho, 223 độ tin cậy
từ, khoảng 168 trừu tượng hạnh phúc với vật chất lượng cao, counterexample, xóa bỏ các lỗi,
231 $ 179, 574 biến đó, 161-163 lặp đi lặp lại bước, mất đến 232 truy cập. Thấy truy cập vào lề
thói hàng ngày cấp cao những lời bình luận từ trở về từ, nhiều, 391 ppm (parts per million-thuật
toán 393 phần chọn cho, 223, 573, 226-pseudocode hết 227 chấm điểm pseudocode, 224-225
vệ sinh phụ nữ để, mất đến 232-PPP thứ 233 quan trọng của, 163 đang trốn lợi thì dãy 165 hộp
đen kiểm 502, từ khóa được tạo ra, trong 175-176, 168 gắn bó về nối tiếpstencils đường dây,
766 trống thụt lề của 766, 768 Mã cài đặt cho-refactoring, bun kiểm tra, lợi ích, 165 người thiết
kế, 87 568 nội bộ 569-tính toán để thực hiện chức năng trực tiếp, ví dụ, bao gồm 184-185,
mệnh lệnh cho tham số tương tự, 176 166,-167-sửa đổi xuất nhập tương tự, refactoring tham
số 574, cuộc gọi, chi phí, trật tự, 174 601-175 đơn giản, tính hữu ích của, 166,-kiểm tra lỗi 167,
230 231-C¥c léi khai, giao diện kích cỡ như chỉ báo refactoring 226, danh sách kiểm tra, 185,
774, 780, 225 565 iterating pseudocode-566, chuyển đổi qua các lớp học, tiêu chuẩn để, chìa
khóa điểm cho, 186, nhỏ, số 234, so với lớn, 166, số 173-174 573, bố trí của 754, 766, 768-ví
dụ, đặc tả 221 Plan Comment bước, mất đến 232 độ dài, chỉ dẫn cho, số 173-174 bước qua
mã, tinh chỉnh, 639 231 mã-giới hạn 640, ghi nhận, 808 sức mạnh, khoảng 168 mã hóa từ
pseudocode gắn bó về lô-gic, 170 subclassing lợi thì 165 225-229 ví dụ chất lượng thấp, 161-
163 gắn bó về thùy thái dương, 169, 168-gắn bó về 171 vĩ mô. Xem thử nghiệm đầu tiên duy trì
thói quen vĩ mô, thứ 233 coincidental phát triển, 170 về mặt tinh thần kiểm tra gắn bó về cho lỗi,
230, 222, 231 thử nghiệm, 523, 805 bình luận của-809, 817 nhiều trở về từ 391 ppm (parts per
million-393, con đĩ dữ liệu trong 567, gắn bó về, tên communicational 169, 180 không dùng
trong các tham số, 576 refactoring, biên soạn cho lỗi, 230 231-F, 171-số 173, 222, 278, 277-lý
do hợp lệ cho việc tạo ra, sự phức tạp, 458 567 đơn vị 164-167 giảm sự phức tạp lợi thì 164
lồng nhau sâu sắc, 164 tên biến, xây dựng thành thạo các lớp học, 217 cho bước đi đồ vật, đi
ngang qua để $ 179, 574, từ, 272 trong dòng continuations gọi 756, sáng tạo, từ khóa ra 175-
176 lớp sai, chỉ thị cho 566, đôi vậy loại, 100-102, so với phi overridable overridable chạy kết
trong suốt thời gian, dữ liệu 253 kỳ, có vụ nổ súng tại số 509 phố lề thói hàng ngày, 145-phát
hiện được 146 cấu trúc dữ liệu cho, 224 bị đè bằng tay không làm việc gì, tuyên bố, 226 đã
phát hiện được 146 147-S
Được định nghĩa, 161 tràn qua, 156 quầy an toàn trong những vòng lặp, 378-số 379 đã vào
descriptiveness dẫn cho các tham số. Tham số cho thấy sandwich hợp nhất, 699 698-
F, 171 lề thói hàng ngày giàn giáo
thiết kế bởi hợp đồng, hiệu suất thứ 233 loại, 165, với 558, gỡ lỗi thiết kế, 86, 220-225 222-223,
523-524 thử nghiệm, tài liệu hướng dẫn cho 531, 178, 780, giấu con trỏ lợi thì khả năng mở
rộng, 48 165. Xem cũng kích cỡ của
các vật thể, 574 lầm lũi nhìn xuống đất lợi ích đáng kể khả năng, dự án 165
duplication lợi thì 164-postconditions 165, 221 phương pháp khoa học, bước vào,
endline cổ điển, 767 bố trí danh mục PPP cho, thứ 233, số 234 540
việc xử lý lỗi-loại, tiền đề, 221 SCM (cấu hình
222 điều căn bản đó, phần mềm quản lý), 665 221. Xem cũng
lỗi sai trong, mối liên hệ với chiều dài, số 173 vấn đề định nghĩa, 221
sự kiện quản lý cấu hình trợ 170 gắn bó về buổi, 170, lịch làm việc ước lượng. Thấy những
cánh đồng tính toán của vật thể, đi ngang qua, thủ tục 574 để nêu rõ sự định hướng, 172 quốc
gia
, bố trí trong tập tin lịch làm việc tốt, 772 pseudocode viết, quy mô của biến bước
gắn bó về chức năng, khoảng 168-169 223-224, 250 chức năng lập luận tiện lợi từ thư viện,
222, sử dụng trong giao diện công cộng được định nghĩa, 244
đáng lo ngại, sang phải 1-4-1 phạm vi toàn cầu, các vấn đề với, 251
, 574 refactoring truy vấn

Z02tôi619670.910 trang hôm thứ Tư, fm Ma thứ tư, 12, năm 2004 12:23 PM:23 PM
910 12 đầu tiên từ trên mục cấp khoanh vùng đóng vai trò gì trong
phạm vi của biến chậm lại, tiếp tục kích cỡ của dự án tiến hóa liên quan đến chân trang c¥c léi
khai phần mềm, các hoạt động, danh sách các phát triển nhanh nhất, nền cho 563, 564-249
250 655-quy tắc cơ bản của 565, điểm mấu chốt, 258 loại hoạt động, những tác động, 655
654-, so với ngôn ngữ bảo trì, xây dựng những sự khác biệt, 244 tòa nhà ẩn dụ cho 19 564,
thời gian sống, làm giảm thiểu, 246-248 Hệ thống thông tin liên lạc giữa mọi người, cải thiện và
làm hư hại hướng bản địa hóa này chỉ tới các biến, 650, 564 245 của sự phức tạp, ảnh hưởng
của 656, 657-triết lý, 565 564-initializations vòng lặp, dị tật bẩm sinh đã tạo ra ảnh hưởng, 249
trên phần mềm, các ẩn dụ. Thấy ẩn dụ, có khả năng quản lí ở mức biện luận, 251 ADE 651
653-hạn chế phần mềm, các hướng dẫn, tài liệu hướng dẫn các yêu cầu cùng họ nhưnhững
nhà tiên tri, 851 phần mềm 249 251 657-chất lượng phần mềm. Thấy chất lượng và thủ thuật
mở rộng, hạn chế sự ước tính gặp lỗi, 656 250-657 tuổi thọ của phần mềm biến số 245 đúng
thủ tục thôi, phần mềm 657 yêu cầu chính của giá trị kỹ thuật bài tập, 249, 659 điểm then chốt
cấp bách, 92 tên biến những tác động, phương pháp, loại, phát triển phần mềm thư viện 262-
Đã nhảy 263 lần 657-số 658, 858 bibliographies khoanh vùng đóng vai trò gì trong chậm lại,
chip 486, 649 khái quát về xây dựng, 856 tập lệnh năng suất, những tác động, tạp chí, 859 653-
860 công cụ, như lập trình, 722 phạm vị trong, ADE 651, ở sao Kim là 855, 857... khái quát về
858-chậm di 600-601, tài nguyên, số 658 659-đọc kế hoạch, 860 862-SDFs (bộ công cụ phát
triển phần mềm sản phẩm, nhiều người dùng, kỹ thuật phần mềm overviews, thư mục) 778
656, 858, 47 chương trình đơn lẻ an ninh, người dùng duy nhất, phần mềm 656-engineering
chọn vùng chỉ dẫn, mã, 455, 656 467 sản phẩm hệ thống dữ liệu có chọn lọc, 254, 656 hệ
thống đang sắp xếp, thuật toán đệ quy cho, tự ghi nhận, 778 mã-sizeof 781, (), 335 393-796-
797 lên đến 394 người các quá trình cẩu thả, 75-76 mã nguồn sự kết nối về ngữ nghĩa, thông
minh chiêu, 334 102 khía cạnh của tài liệu hướng dẫn, 7 quan trọng lắm, về ngữ nghĩa 280-
281, 703 xét nghiệm khói tài nguyên để, 713 semantics Oceanic 815 ca rô,-714 phần mềm ẩn
dụ vật biển lân cận, 15-16 công cụ mã nguồn xét nghiệm trọng yếu cho những vòng lặp, tù
nhân thứ 621. 623-khái quát về xây dựng phần mềm phân tích các chất lượng, 713-714, mã
trình tự. Xem cũng dãy nhà hoạt động loại trừ khỏi beautifiers 6, 712, trốn với thói quen hàng
ngày, 165 trong danh sách, các hoạt động của, 3 lớp-máy phát điện, 713 phân cấp trật tự. Thấy
centralness dependencies, tới sự phát triển comparators, lý tưởng là 556-ra lệnh cho quá trình,
mã 7 hãy đánh dấu những công cụ có cấu trúc 713, khái niệm được định nghĩa, lập trình 3-6 từ
điển dữ liệu, 715, 454 tài liệu hướng dẫn của bởi mã nguồn, 7 công cụ Diff 712, cách tiếp cận
nối tiếpstencils, 33-36 bảo đảm làm bản chất của, 7 công cụ sửa, 710 713-gắn bó về nối
tiếpstencils, khoảng 168 quan trọng của, 6-7 grep 711, đặt () lề thói hàng ngày, chìa khóa 576
điểm cho, 8 ý tưởng tồi, 710 711-Mã cài đặt, refactoring, 569 568-các hoạt động chính của, 4 tài
liệu hướng dẫn giao diện, Công cụ cài đặt, 718 713% tổng hợp nhấtstencils công cụ phát triển,
712 trong một thời gian ngắn đánh giá, 438 mạch điện vào lúc 8h-quá trình, 7 số liệu, phóng
viên, 714 610 năng suất, quan trọng trong, 7 tập tin đa chuỗi tìm kiếm, tác dụng phụ, C++, 761
759-lập trình, 5 711 là 712-Signing off mã trên 663, lập trình, 4 công cụ refactoring, so với, 714
715-đơn giản trong tham số dữ liệu đôi vậy, 101 mã nguồn Như tài liệu hướng dẫn, 7 công cụ
tái cơ cấu 715, vật thể đơn giản trong đôi vậy, các tác vụ 101, danh sách, semantics 5 Ca rô,
713-714 điểm kiểm soát đơn, dụng 308 trẻ em trong thiết kế phần mềm. Thấy cú pháp thiết kế,
713 ca rô-714 đơn bài phát biểu dãy nhà, 749 748-phát triển phần mềm thư mục mẫu, 713
singleton tài sản, thực thi, 104, 778 SDFs (), thông dịch. 715 151 kỹ thuật phần mềm tổng quát
về công cụ kiểm soát, 715 Phiên bản tài nguyên, 858, 245, bao quát là 459 $

Z02tôi619670.Trang 911 ngày thứ Tư, fm Ma thứ tư, 12, năm 2004 12:23 PM 12:23 PM
phần mềm đội quá trình cấp hàng đầu cuối cùng mục 911
chuỗi các yêu cầu chức năng cụ thể loại dữ liệu cấp thiết kế hệ thống con, 82-85, 42 ngôn ngữ
C danh mục, 299-301, 295 nonfunctional đặc trưng cho phép trừ các yêu cầu bộ ký tự, 298
hoán đổi dữ liệu sử dụng những cấu trúc danh mục, 42, danh sách kiểm tra, 316 bé ở 317
321--đặc tả 322. Thấy chuyển đổi các điều kiện, 299 chuyển c¥c léi khai chiến lược. Thấy tốc
độ cải thiện được trường hợp, chỉ số, luận điểm 298, 299 300, 627 trong c¥c léi khai-642 ca-
643. Còn thấy điều chỉnh; khởi tạo mã, 300, 526 debuggers tượng trưng-hiệu suất điều chỉnh
hattrick 527, 298, cú pháp lỗi sai trong, 549-550 trong số đó, 560, SQL Server, 65 ảo thuật
nghĩa đen) sợi dây, (297-298 713-giữ thăng bằng lỗi, 542 714-543, 298 mối quan tâm trí nhớ,
hệ thống 300 kiến trúc. Thấy kiến trúc cầu thang-bước cho bảng truy cập 426-trong đó có 429,
so với các mảng, tính cách chiêu 299 gọi hệ thống tiêu chuẩn, tổng quát về, 814, 298, 299
Unicode mã tinh chỉnh, 634 633-state biến số. Thấy các biến số trạng thái chiêu, chuỗi các vấn
đề hiệu suất của 299, có 599-strncpy c¥c léi khai () 600, 301, luận điểm dependencies hệ thống
85, 774, 105 hệ thống gắn bó về mạnh mẽ, 527 perturbers chặt chẽ các yếu tố liên quan đến
756 755-cấu trúc. Xem thử nghiệm, hệ thống các cấu trúc 500, 754 bố trí continuation-758 tới
hệ thống kiểm tra cơ sở có cấu trúc refactoring cấp, 577 576-, kết thúc của continuations, 756-
này rộng 757 khuyến cáo, 503 579 754-755 không hoàn chỉnh, lý thuyết của, 505-có vụ nổ súng
tại số 509 phố chiều dài, 753, 572 refactoring lập trình có cấu trúc-573, 578 577-cốt lõi của, luận
điểm chính 9306456 - 9303425 T
liên tiếp. Thấy dòng thẳng lặp lại, 9306456 - 9303425 bảng mã định hướng
b¥o c¥o tönh träng phương pháp, khái quát về ăn kiêng., 454, 420 địa
vị lợi của các biến số tùy chọn, 455 tìm kiếm với, 428 nhị phân
cấp chút ý nghĩa, 803, 454 trường hợp tuyên bố các dãy tiếp cận,
thay đổi, nhận dạng các khu vực của các cấu trúc, 421-422
98-99 dãy nhà của dữ liệu, hoạt động ngày danh mục, trong đó có 429,
các loại được đánh sốstyle name cho 266, 267 320-322-mã tinh chỉnh với 614, 615 gotos-viết
lại với, 403-danh mục cho, 343 404 tạo ra từ chính,
cái tên cho, 266 435-267 việc làm rõ mối quan hệ với dữ liệu, ngày trong tháng ví dụ, 413-
ngữ nghĩa của sự kết nối, 414 102 320 được định nghĩa, 411
mã dòng thẳng biểu diễn các lớp học như, phương pháp thiết kế hành cao nhất, 420, 353 được
định nghĩa một danh mục hành cao nhất trực tiếp. Thấy
việc làm sáng tỏ dependencies trực tiếp, 348-350 điểm then chốt, 344
, 347 dependencies bàn khái niệm, giảm bảo trì với 323, các thiết bị đầu cuối của phạm vị 428,
tài liệu hướng dẫn, 350 322 overdoing, mềm dẻo-định dạng thông điệp lỗi kiểm tra, ví dụ, 350
đơn giản hoá với, 416 người tham số 423-
liên quan đến phát biểu này, 322 trang trí fudging chìa khóa xe cho 423, 424
352--353, ví dụ rõ ràng của các mối quan hệ, phụ lục cho bảng truy cập 452-426,
dependencies ẩn, 348 320 428-trong đó có 429
, 348 công việc thường nhật của trật tự sở khởi gọi với 322 tỷ lệ bảo hiểm, ví dụ, 415-
f 416 người lề thói hàng ngày, 348 349-simplifying hoạt động với dữ liệu, những vấn đề trong
412, 413-
rõ ràng và dependencies, 348 320-322 điểm then chốt,
tổ chức để cho năm 430 hoán đổi dữ liệu, 321-chìa khóa xe cho 423 322, 424-dependencies, ví
dụ, dữ liệu không cấu trúc 348 320, 412 vấn đề xem dạng Cây
tham số hiệu quả, 349, Visual Basic ví dụ, 320 322-ví dụ, trong đó có 429 lặt vặt sự gần gũi với
nguyên tắc, 351 dập tắt các vật thể, thử nghiệm với, 523 Cách tiếp cận đối tượng, 422 423-
trật tự, yêu cầu, cụ thể, 347-cuống tích hợp như aids 350, 694, 696, 635 precomputing tính toán
trên xuống dưới cuống phiếu dễ đọc với việc gỡ lỗi aids, 208-209 mục đích của 411-
quy cách 412, 351 352-vấn đề kiểu máy chạy-bước cho bảng truy cập 426-
Chiến lược mô hình này, trong đó có 429 104 đang định dạng. Bố trí xem vấn đề lưu trữ, 413
mục tiêu, 81 stratification thiết kế tự ghi nhận, 778 mã-chìa khóa, 424 781 biến đổi
lệnh Strcpy ((), 301 con người những khía cạnh về, 683 684-định đến Tacoma thu hẹp lại tầm
nhìn, 74 dòng suối khô cạn, cây cầu 206 tiểu các quy trình, 161. Xem cũng mã, refactoring
takedown,
sức mạnh. Thấy lề thói hàng ngày 568-569 gắn bó về phần mềm đội quá trình (TSP), 521

Z02tôi619670.912 trang hôm thứ Tư, fm Ma thứ tư, 12, năm 2004 12:23 PM:23 PM
912 12 đầu tiên từ trên mục cấp đội
nhóm. Xem cũng quản lý được định nghĩa-sử dụng dữ liệu đường dẫn này, 510-512, sử dụng
cho kết quả, xây dựng các mối quan tâm thiết kế 502, 503 đóng vai trò gì trong phần mềm đảm
bảo chất lượng, xây dựng các nhóm, thiết kế, hiểu lầm, 704 265 519 500-danh mục, nhà phát
triển 502 69-giới hạn, 504 thói quen hàng ngày xem, hộp đen kiểm 502, quá trình phát triển
được sử dụng bởi các xét nghiệm, phát triển, 522, 523-dàn giáo cho 531 840 524, diff công cụ
cho 524, phạm vi dị tật bẩm sinh, 265 519 mở rộng để gặp lịch trình, trình điều khiển lề thói
hàng ngày, 523 676 chọn trường hợp vì sự thuận tiện, các giám đốc, đã hỏi 686 các lớp học
giả, 523 516 môi trường vật chất, 684-685 tập tin giả cho 524, giữ thăng bằng, 542 lỗi bí mật
trong văn phòng, 684 trong xây dựng, 503, 502-tiêu chuẩn, số 532, quá trình IEEE trọng 839,
840-dễ sửa dị tật bẩm sinh, 265 519 cơ sở có cấu trúc thử nghiệm, 503, tôn giáo, vấn đề 683-
684, 512 505 partitioning lý tương đương điện toán-có vụ nổ súng tại số 509 phố tài nguyên,
685-lỗi đã hỏi 686 danh sách kiểm tra cho, Dập tắt các vật thể, 503 523 kích cỡ của các dự án,
ảnh hưởng của, 650 653-cơ sở dữ liệu lỗi, 527, 526 debuggers tượng trưng-527 vấn đề kiểu,
683-lỗi, 513 684 đoán hệ thống, thời gian allocations perturbers 527, 681, 501 giả định sự hiện
diện lỗi hệ thống kiểm tra, 500 sự thay đổi trong hiệu suất, lỗi sai trong thử nghiệm chính nó,
522, 465, 467 testability 681-683 tỷ lệ khuyết điểm mong đợi, 521 522-gặp lỗi, 522 trường hợp
thử nghiệm công nghệ, việc xác định đầu tiên của sóng hay cuối khuyến cáo, thời gian cam kết,
501 502-vị trí trong, 66-69 503-504, cho 531 thử phát triển đầu tiên, phương pháp mẫu mô hình
này, thứ 233 104, 522 cho khung, công cụ danh sách 524, 719, công cụ, 713 mẫu mục tiêu của,
501 đơn vị đang thử, từ 499 $, x545gắn bó về thùy thái dương, 169 dữ liệu tốt các lớp học, độ
sâu 515-516 trường hợp khác nhau, các biến số tạm thời, 267 x545-tới khi vượt qua mức kỷ lục
268, từ 499 $ thử nghiệm tích hợp hộp màu trắng, thử nghiệm, 500, 502 testability JUnit cho,
Cho 531, 337 threading được định nghĩa, 465 điểm then chốt, 533, 114 mã throwaway các
chiến lược, 467 giới hạn cho nhà phát triển, ném một thử nghiệm đi 13-14 phép ẩn dụ, kiểm tra
dữ liệu máy phát điện, 524--525 504 thời gian tiền tiêu vặt 55-56 đầu tiên phát triển, thử thứ
233 đang đăng nhập công cụ cho công cụ kiểm soát 526, phiên bản thử nghiệm 668, bảo hiểm
thử nghiệm, logic chiếc hộp đó tiếp cận, ở 506 20 tới thử nghiệm, phòng 528-529 bình thường
các cấu hình, công cụ tối đa dữ liệu các lớp học, phòng số 514 đấy xấu-độ sâu 515 độ sâu 515,
70 đen-danh mục hộp kiểm tra, đo lường của, 520 500, 529 gỡ lỗi. Gặp gỡ lỗi kết giới phân
tích, 513-phòng số 514 đấy, biên tập 527 công cụ bộ nhớ. Công cụ sửa thấy thích thú công cụ
kiểm tra, 527 bình thường các cấu hình, lập trình tối thiểu. Thấy trường hợp, tạo thành lập trình,
ở 506-508, độ sâu 515 522-525 công cụ, số 532 chế nhạo các vật thể, 523 mã nguồn. Xem
công cụ mã nguồn đặc điểm của kẻ rắc rối, trường hợp trên danh nghĩa, gặp lỗi, độ sâu 515 từ
trên xuống dưới để thiết kế, 501 dữ liệu cũ, khả năng tương thích với 516, 111-danh mục, số
532 113 lạc quan lập trình viên từ trên xuống dưới 694, 696-tích hợp các lớp học dễ bị lỗi, 517-
đến 518 phố hạn chế, 504, 602, chức năng theo phái phân loại các lỗi, 634 đến 518 phố-520
bên ngoài công trình xây dựng công cụ, 715 bộ dịch miền xét nghiệm sạch hạn chế, 504 dị tật
bẩm sinh, 265 519-cuối cùng phát biểu này, cố gắng 404-405 lỗi giấy tờ thôi (typos), 265 519
việc lập kế hoạch cho, phòng 528 hình chữ T hợp nhất, thử nghiệm, bảo hiểm mã tầng 2! ở
506, 505 loại bảo hiểm ưu tiên tuyển diễn viên, tránh, 334, từ 499 $ provability thử nghiệm
thành phần của sự đúng đắn về, 501, tạo kiểu hợp chất ranh giới, phòng số 514 đấy 505 C++,
312 dị tật bẩm sinh, xây dựng tỉ lệ không bị ảnh hưởng bởi chất lượng, 501, 314 lợi ích của tập
trung, 520-521 các dữ liệu ngẫu nhiên máy phát điện, luận điểm 525, 318, 505 mã tin tức về-có
vụ nổ súng tại số 509 phố 526, cách tiếp cận được khuyến nghị sử dụng Phải, các lớp học, so
với 316 bé ở luồng dữ liệu, thử nghiệm, có vụ nổ súng tại số 509 phố-512 503-ví dụ, 313 504-
315 máy phát điện cho dữ liệu, kỷ lục 525 524-giữ cho, 529-530 các hướng dẫn, 315-316 bé ở
các công cụ, 526 máy ghi dữ liệu thá"- ra há""i quy, 500, thông tin đang trốn khía cạnh của
phòng 528, 526, 527 debuggers-các điều kiện, 503 313-gỡ lỗi, so với 314, 500, 530-tài nguyên
cho 531
Z02tôi619670.913 trang hôm thứ Tư, fm Ma thứ tư, 12, năm 2004 12:23 PM 12:23 PM
mục cấp hàng đầu cuối cùng Visual Basic 913
ngôn ngữ với, đánh giá mô tả chính xác, quy tắc, dữ liệu việc biết chữ, 238 xét nghiệm-là 239
314-315 260-tăng 261 kiểu dữ liệu quan hệ kiểm soát lợi ích, 314 sửa đổi tên xấu, ví dụ về các
cấu trúc,, 254 255 F-hiệp định 315 259-260, tăng 261 tuyên bố. Thấy tuyên bố Pascal ví dụ,
312 313-bun biến số khác, tới khi vượt qua mức kỷ lục 268-năm 269 toàn cầu. Thấy các biến
số lợi ích đáng kể khả năng toàn cầu, 315-C ngôn ngữ, 316 bé ở 275, 278 ý nghĩa ẩn, tránh,
kiểu, tránh, được định nghĩa sẵnstencils 315 C++, Đã nhảy 263 lần, 275-277 256-257 mục đích
của, 311-312 vốn hoá, 286 đôi vậy, 256-lai 257, 314 với lý do là nhân vật, khó đọc, tính ẩn
tuyên bố, là 239 2-0-0-240 định nghĩa lại được định nghĩa sẵnstencils, 315, 288-danh mục 89
CLERK Äang sá, 240-244, 257 độ tin cậy 314 lợi thì các biến số thành viên lớp, lặp đi lặp lại,
255 273 dữ liệu hợp thức hoá lợi thì 314 tính giá trị-2010, điểm mấu chốt, kiểu định nghĩa, 278
258 Đã nhảy 263 lần-thời gian sống, 246 264-248, là 459 $ 270, tham khảo bản địa hóa hằng
số để, 245 loại được đánh sốstyle name, lăp lại, 382 năm 269 384-U mô tả ngắn gọn ½iëu loe,
260-f tăng 261. Thấy tên biến UDFs (đơn vị thư mục), phát triển, 2010 cho toàn cầu, đã nhảy
263 lần sự nhất quán của, 251 252 778-tên tốt, ví dụ về, nguyên tắc, sự gần gũi với 260, 242
317 UDT (kiểu người dùng định nghĩa) tăng 261 bộ phạn hạng, 576 công cộng abbreviations,
279-280 homonyms, 286, 571, 576 refactoring bộ sưu tập umlstencils biểu đồ, 1 1 8, các hiệp
định Java, 277 120 tái sử dụng, 255-understandability, 465 257. Còn thấy điểm then chốt, phạm
vi phạm Đoạn 289 của. Thấy quy mô của biến số khả năng đọc loại thông tin trong 277, dữ liệu
có chọn lọc, 254, 288-Unicode chiều dài 299, 262, dữ liệu nối tiếpstencils tối ưu - điều kiện, 254
đơn vị thư mục (UDFs phát triển), các chỉ số vòng lặp, có 265, 245 778 tuổi thọ của sai chính tả
từ, 286 loại. Xem dữ liệu các loại xét nghiệm đơn vị, từ 499 $ nhiều ngôn ngữ, tự nhiên sử
dụng tất cả tuyên bố 2-0-0, 257 môi trường lập trình UNIX, miền tên, đã nhảy 263 lần kiểm soát
720 trên cái que trong phiên bản, 286, 811 bình luận của sẽ quảng bá những thông những vòng
lặp, 618-620 cặp bổ sung cho ngược lại, 264 trì c¶p tiën m't gá"¡ bá", 207 gỡ lỗi unswitching
những vòng lặp, 616-617 phonic abbreviations, công cụ cho 668, 283, 715 ngược dòng điều
căn bản đó. Thấy quy tắc hướng, vấn đề tăng 261 tầm nhìn. Còn thấy quy mô của biến số điều
căn bản đó, ngược dòng khoảng cách tâm lý, lý tưởng là 556 đôi vậy tiêu chuẩn để, khả năng
sử dụng 100, 463, 240 mục đích của các lớp học, của, 93 tiểu bang, sử dụng dữ liệu có vụ nổ
súng tại số 509 phố-510 tên dành riêng, tầm nhìn bài phát biểu 2-0-0 điều căn bản đó. Thấy
kiểu người dùng định nghĩa (UDT) tên, thói quen phân tách định nghĩa abbreviations vấn đề,
279-280 từ, 272 người dùng giao diện điều căn bản đó phạm vi, ảnh hưởng của, 262-Đã nhảy
263 lần Visual Basic kiến trúc điều căn bản đó, 47 độ đều đặn của tên, quá nhiều, khẳng định ví
dụ, 192 194-refactoring dữ liệu từ 576, 285, 738 kiểu ức chế thiết kế hệ thống con, 85 - rõ ràng
quy định, trường hợp-thích tố nam tăng 261, 273, 266 biến số trạng thái-267 mô tả về, 65
tạm thời biến số 267 V-tới khi vượt qua mức kỷ lục 268 loại được đánh sốstyle name, 303-306
kiểu hợp thức hoá tên, phân tách từ, những ngoại lệ trong, 198-199, 202
giả định để kiểm tra, danh sách, 190 272 273-ngầm tuyên bố, tắt,
các loại dữ liệu, nghi ngờ, 188 Visual Basic, 279 240
loại được đánh sốstyle name cho 304, 305 bố trí các biến số được khuyến nghị sử dụng-,
tương đương $ 745 nguồn dữ liệu từ bên ngoài, 188 quy tắc ràng buộc về thời gian cho, 252
254 F-in cho, 278-279
, 188 quy tắc tham số nhập thay đổi, nhận dạng các lĩnh vực, các tham số Ví dụ, 180
tên biến 98-99 nguồn tài nguyên, 159
viết tắt cho các nguyên tắc hướng dẫn, danh mục cho việc sử dụng 282, 257-258, 320-322 cấu
trúc bình luận cho 803, 243,

Z02quầy tôi619670.914 trang hôm thứ Tư, fm Ma thứ tư, 12, năm 2004 12:23 PM:23 PM
914 12 đầu tiên từ trên mục cấp đi-throughs
W mục đích của, 368 vấn đề độc ác, 74-đi-throughs 75 đã vượt qua 492-493, 495, 496-xét
nghiệm, vị trí, với 369 Wikis, những dấu hiệu cảnh báo, 848 117-850 không gian yếu đuối, hội
chứng da trắng 26 trong khi những vòng lặp đường trống, 737, 748-WISCA 7 47, 26 hội chứng
lợi của 374, 375-732 được định nghĩa một cách khắc phục, ghi nhận, 800 phá vỡ lời nói, số 379
đã vào trang trí với, 737 viết ẩn dụ cho mã hóa, 13-14 do-trong khi những vòng lặp, với 369,
736 quan trọng của lối ra vào, với 369, 737 372-canh lề những vòng lặp, 374 vô hạn tuyên ngôn
của cá nhân với,
quan niệm sai lầm của đánh giá Z 554, 753 754-0 phân chia, bằng cách, 292
null Lời tuyên bố với 444, hộp màu trắng, thử nghiệm, 500, 502

Steve McConnell
Steve McConnell là sếp kỹ sư phần mềm ở Construx mềm mã độc nơi hắn- trông nom
Construx là kỹ thuật phần mềm tices prac-. Steve là dẫn cho việc xây dựng khu vực kiến thức
của phần mềm kỹ thuật phần kiến thức (SWEBOK) dự án. Steve đã làm việc trên dự án phần
mềm tại Microsoft, Boe- ing, và các vùng ở Seattle công ty.
Steve là tác giả phát triển nhanh chóng (năm 1996) Dự án phần mềm, Hướng Dẫn (1998) Sự
tồn tại, và phát triển phần mềm chuyên nghiệp (2004). Những cuốn sách của ông ấy có 2 lần
thắng maga phát triển phần mềm- zine là khổ sở giải thưởng cho sự ưu tú dư phát triển phần
mềm- ment cuốn sách của năm. Steve cũng là người dẫn nhà phát triển của SPC - ước tính
chuyên nghiệp, chiến thắng của một công cụ phát triển phần mềm Pro- ductivity giải thưởng
này. Vào năm 1998, và độc giả của tạp chí phát triển phần mềm tên là Steve một trong ba
người có ảnh hưởng nhất trong ngành công nghiệp phần mềm, cùng với Bill Gates và Linus
Tor- valds.
Steve đã kiếm được 1 tấm bằng cử nhân từ Whitman học đại học và luyện tập trong kỹ thuật
phần mềm từ Seattle đại học. Ông ấy sống Bellevue, Washington.
Nếu bạn có bất kỳ câu hỏi những lời bình luận hay về cuốn sách này, xin hãy liên lạc với Steve
tại Stevemcc@construx.com hoặc thông qua www.stevemcconnell.com.

You might also like