Kết bạn với tôi <3
Skype: giautm
Facebook: https://fb.com/giautm.duongntt
Email: giau.tmg@gmail.com
:v Việc này giống như là bạn return một con trỏ trỏ đến một biến cục bộ trong hàm vậy, nhưng cái đó compiler còn bẫy được. Kiểu này thì không. Và có nguy cơ gây crash chương trình, lúc test do code ít, cấp phát ít, số lượng biến sử dụng ít, nên có thể là không thấy lỗi. Nhưng một khi đưa vào hệ thống đồ sộ rồi, thì chỉ có nước khóc ròng vì không thể tìm ra lỗi.
Kết bạn với tôi <3
Skype: giautm
Facebook: https://fb.com/giautm.duongntt
Email: giau.tmg@gmail.com
@quano1:
- Viết library thì syntactically correct là một chuyện, semantically correct là chuyện khác.
- Viết library là rất khó, khó hơn viết app thường nhiều, vì chúng ta phải design rất cẩn thẩn tránh việc người dùng library hiểu nhầm ý định của API. Ví dụ, nếu mình dùng hàm setEx() của bạn, thì mình dữ liệu của mình sẽ ra sao khi hàm đó kết thúc? Gán pointer kiểu đó thật sự là không cần thiết, và redundant.
- Muốn viết library cho C++ thì mình khuyên bạn nên tìm hiểu các library chuẩn trước, cơ bản là STL, advance thì có boost. Bạn phải hiểu và thành thạo mấy cái Design Pattern căn bản đã, sau đó vọc vào C++ STL, vì nó còn dùng nhiều các advance pattern khác nữa.
- Và điều quan trọng nhất, là library phải "testable", (unit test, functional test....). Cách tốt nhất mà mình học được khi viết library component là Test Driven Development:
1) Design sơ vài class (components)
2) Viết test support nó
3) Quay lại chỉnh sữa, rồi quay lại bước 2.
Nếu bạn có thời gian thì tìm và đọc mấy cuốn sách sau:
- The C++ Standard Library: A Tutorial and Reference
- Modern C++ Design: Generic Programming and Design Patterns Applied
- Design Patterns: Elements of Reusable Object-Oriented Software
- Agile Software Development, Principles, Patterns, and Practices
- C++ Coding Standards: 101 Rules, Guidelines, and Best Practices
- API Design for C++
- Clean Code: A Handbook of Agile Software Craftsmanship
- Large-Scale C++ Software Design
Last but not least, bạn có thể post cái graph library của bạn lên đây cho mọi người dùng qua thử thì bạn sẽ biết design của bạn nó good/bad thế nào.
@doicanhden: thanks. mình sẽ tìm hiểu thêm về curly bracets. cái vấn đề mà bạn nêu đúng là chết người
@rr: argument là 1 pointer thật ra là có lý do
mình đang cố gắng hoàn thành trong cuối tuần tới. còn thuật toán A* và 1 phần nhỏ về thread nữa. nhất định viết xong sẽ post lên để mọi người cùng góp ý và chỉnh sửa.
3 năm rồi không sờ vào nó, hầu hết kiến thức căn bản đã đi toong...chủ ý ban đầu khi viết template là mình muốn ôn lại kiến thức C+.
thanks all
Đã được chỉnh sửa lần cuối bởi quano1 : 25-08-2013 lúc 10:11 AM.
Về scope thì không có gì mới mẻ để tìm hiểu cả. Đơn giản là biến/vùng nhớ được cấp phát tĩnh trong scope thì khi ra ngoài scope sẽ được giải phóng tự động. Điều cần làm bây giờ là bỏ ra ít thời gian để đọc lại toàn bộ mã nguồn xem có làm điều tương tự ở đâu không. Vì bạn bảo là lâu không đụng đến nên mình mới khuyên điều này. ^^!
P/s: Nếu code "đồ sộ" quá rồi thì có thể mất cả ngày để kiểm tra đấy. Vì nhiều trường hợp không phải là nhìn phát ra ngay đâu. =.="
Kết bạn với tôi <3
Skype: giautm
Facebook: https://fb.com/giautm.duongntt
Email: giau.tmg@gmail.com