20 truyện với 5 mùi mã mỗi truyện là 100 mùi mã đúng không?
Bạn không sở hữu đối tượng.
TL; DR: không sử dụng tiền tố tên của tôi .
MainWindow myWindow = Application.Current.MainWindow as MainWindow;
MainWindow salesWindow = Application.Current.MainWindow as MainWindow; /* Since window is instanciated, we are currently working with a specialized window playing a special role */
Tránh sử dụng của tôi . Đối tượng thay đổi theo ngữ cảnh sử dụng.
Suy nghĩ về kinh nghiệm sửa đổi mã của mình, tôi thấy rằng tôi dành nhiều thời gian hơn để đọc mã hiện có hơn là viết mã mới. Vì vậy, nếu tôi muốn làm cho mã của mình rẻ, tôi nên làm cho nó dễ đọc.
Kent Beck
Trích dẫn tuyệt vời về kỹ thuật phần mềm
Chúng ta nên đặc biệt chú ý đến các mô tả lỗi cho người dùng (và chính chúng ta).
TL; DR: Sử dụng các mô tả có ý nghĩa và đề xuất các hành động khắc phục.
alert("Cancel the appointment?", "Yes", "No"); // No consequences // Options not clear
alert("Cancel the appointment? \n" + "You will lose all the history", "Cancel Appointment", "Keep Editing"); // Consequences are clear // Choice options have context
Mặc dù có một thực tế là các lập trình viên không bao giờ mắc lỗi, nhưng vẫn nên làm hài lòng người dùng bằng cách kiểm tra các lỗi ở những điểm quan trọng trong chương trình của bạn.
Robert D. Schneider
Chính tả và khả năng đọc là rất quan trọng đối với con người và không quan trọng đối với máy móc.
TL; DR: Hãy quan tâm đến tên của bạn.
Bài viết này có lỗi đánh máy trong tiêu đề như bằng chứng về ngữ cảnh và cũng là một lời nhắc nhở 😀
comboFeededBySupplyer = supplyer.providers();
comboFedBySupplier = supplier.providers();
Mã mùi 48 - Mã không có tiêu chuẩn
Tên chính xác là gì - Phần I Nhiệm vụ
Tên chính xác là gì - Phần II Phục hồi chức năng
Bên trong mỗi chương trình lớn được viết tốt là một chương trình nhỏ được viết tốt.
Căm xe
Có bao nhiêu lần chúng ta thấy những tên đối số lười biếng?
TL; DR: Đặt tên cho các đối số của bạn theo vai trò chứ không phải vị trí ngẫu nhiên
class Calculator: def subtract(self, first, second): return first - second class CalculatorTest def test_multiply(): assert equals(first, second)
class Calculator: def subtract(self, minuend, subtrahend): return minuend - subtrahend class CalculatorTest def test_multiply(): assert equals(expectedValue, realValue)
Mã mùi 65 - Các biến được đặt tên theo loại
Tên chính xác là gì - Phần II Phục hồi chức năng
Mã nguồn cuối cùng là thiết kế phần mềm thực.
Jack Reeves
GOTO bị coi là có hại cách đây 50 năm
TL; DR: Đừng bao giờ sử dụng GoTo.
for x < 0 { if x > -1e-09 { goto small } z = z / x x = x + 1 } for x < 2 { if x < 1e-09 { goto small } z = z / x x = x + 1 } if x == 2 { return z } x = x - 2 p = (((((x*_gamP[0]+_gamP[1])*x+_gamP[2])*x+_gamP[3])*x+_gamP[4])*x+_gamP[5])*x + _gamP[6] q = ((((((x*_gamQ[0]+_gamQ[1])*x+_gamQ[2])*x+_gamQ[3])*x+_gamQ[4])*x+_gamQ[5])*x+_gamQ[6])*x + _gamQ[7] return z * p / q small: if x == 0 { return Inf(1) } return z / ((1 + Euler*x) * x) }
for x < 0 { if x > -1e-09 { return small(x, z) } z = z / x x = x + 1 } for x < 2 { if x < 1e-09 { return small(x, z) } z = z / x x = x + 1 } if x == 2 { return z } x = x - 2 p = (((((x*_gamP[0]+_gamP[1])*x+_gamP[2])*x+_gamP[3])*x+_gamP[4])*x+_gamP[5])*x + _gamP[6] q = ((((((x*_gamQ[0]+_gamQ[1])*x+_gamQ[2])*x+_gamQ[3])*x+_gamQ[4])*x+_gamQ[5])*x+_gamQ[6])*x + _gamQ[7] return z * p / q small(x, z) { if x == 0 { return Inf(1) } return z / ((1 + Euler*x) * x) } }
Bằng các ngôn ngữ hỗ trợ GOTO , linters của chúng tôi có thể cảnh báo chúng tôi về việc sử dụng nó.
Hầu hết các lập trình viên may mắn tránh được câu GOTO. Mục tiêu tiếp theo sẽ là xem xét việc sử dụng null có hại.
lịch sự
Thực tế là không thể dạy lập trình tốt cho những sinh viên đã từng tiếp xúc với BASIC: với tư cách là những lập trình viên tiềm năng, họ bị cắt xẻo tinh thần không còn hy vọng tái sinh.
Edsger Dijkstra
Trích dẫn tuyệt vời về kỹ thuật phần mềm