Tô Mỳ Minh Duy (CTTMMD)

Đào tạo Lập trình viên

Cách thực hiện Mã nguồn Diễn giải Một bài học Lập trình C#

Mục đích Bài viết này

Bài viết này cho biết khi nào mình biết đã hoàn tất toàn bộ mã nguồn cho việc diễn giải một bài học dạy theo kiểu Minh Duy cách lập trình C#.

Đường dẫn này cho thấy từng bước một cách làm mã nguồn cho bài học đoạt được những tiêu chuẩn thành công: Cách dạy LTV C# ở Mỹ học làm WPF theo kiểu LBL

Tiêu chuẩn Thành công

Mã nguồn dạy học lập trình theo kiểu Minh Duy phải đáp ứng được hết tất cả các đòi hỏi trong phần này. Nếu câu trả lời là không cho bất cứ câu hỏi nào trong danh sách này thì mã nguồn mình chưa làm xong:

  1. Có xây dựng mã nguồn mình cho bài học tương tự như cho thấy trong ví dụ trên trang này, Ví dụ Toàn bộ Mã nguồn cho Bài học Lesson30104, hay không?
  2. Có phải dòng đầu tiên trong mã nguồn là một comment cho biết địa chỉ web bài yêu cầu việc làm hay không? Đây là ví dụ: cttmmd.wordpress.com/2012/12/03/yeu-cau-viec-lam-so-1202
  3. Có phải dòng thứ nhì trong mã nguồn là một comment cho biết câu hỏi nào bài học này sẽ trả lời, hay không?
  4. Trong mã nguồn namespace có tên tắt của mình và số năm mình làm việc hay không, ví dụ tvt2013?
  5. Trong không gian tên có một lớp bài học (lesson class) đặt tên bắt đầu bằng chữ Lesson đính kèm với một số nhận diện bài học, ví dụ, Lesson30104, hay không?
  6. Có tạo một phương thức mang tên RunDemo() cho lớp bài học để người khác có thể cho bài học chạy, ví dụ, Lesson30104.RunDemo(), hay không?
  7. Toàn bộ mã nguồn cho một bài học duy nhất có nằm trọn vẹn trong một tệp duy nhất không?
  8. Mã nguồn nào của bài học khác cũng nằm bên ngoài tệp mã nguồn cho bài học này, phải không?
  9. Có dùng thùng đồ nghề tạm duyệt, ttt: TempTraceToolbox, ở trên trang này để cho hết kết xuất vào một tệp tạm cho học viên có thể theo dõi những gì phần mềm đã thực thi cho bài học không?
  10. Khi bắt đầu chạy, có dùng ttt.ClearLog() để xoá tệp theo dõi không?
  11. Có gọi ttt.StartLesson() để đánh dấu sự bắt đầu của bài học không?
  12. Có gọi ttt.EndLesson() để đánh dấu sự kết thúc của bài học không?
  13. Sau khi kết thúc, có gọi ttt.ViewLog() để cho thấy nội dung tệp theo dõi không?
  14. Phần mềm biểu diễn bài học có đánh số hết các dòng kết xuất trong tệp theo dõi không?
  15. Có xoá hết tất cả những lời diễn giải tiếng Anh trong mã nguồn chưa?
  16. Có lời tiếng Việt giải thích hết các dòng mã nguồn nào trực tiếp liên quan đến mục tiêu bài học hay không?
  17. Lớp vật thể nào, ví dụ, public class, nào cũng phải nằm bên trong tệp bài học. Tất cả các dòng mã nguồn của một bài học cần nằm hoàn toàn bên trong một tệp bài học duy nhất. Hệ diễn giải sẽ có hàng trăm hàng ngàn bài học và bài học nào cũng phải toàn bộ và độc lập, ngoại trừ việc dùng công cụ biên bản TTT (TempTraceToolbox).

Mã nguồn Tài xế Diễn giải

        private void buttonLesson30105_Click(object sender, RoutedEventArgs e)
        {
            this.Cursor = Cursors.Wait;
            tvt2013.Lesson30105.RunDemo();
            MessageBox.Show("Lesson30109 all done");
            this.Cursor = Cursors.Arrow;
        }

Tiêu chuẩn Thất bại

Bất cứ điều nào dưới đây áp dụng được cho một bài học thì bài học chưa thành công hoặc không có giá trị:

  1. Mã nguồn trên đây là ví dụ tài xế diễn giải một bài học lập trình nào đó. Khi tài xế chạy thì sẽ thấy lời nhắn cho biết làm xong hết rồi. Nếu tài xế chạy hoài không bao giờ kết thúc thì bài học thất bại.
  2. Chữ tiếng Anh nào cũng phải viết ra nguyên chữ và không đánh vần sai. Dù một chữ đánh vần sai cũng làm cho bài học thất bại. Lời diễn giải bằng tiếng Việt có thể đánh vần sai vì tiếng Việt sẽ thay thế bằng tiếng Anh cho học viên Mỹ xem.
  3. Nếu dùng tiếng Anh diễn giải trên những dòng comment trong mã nguồn thì phải làm cho LTV C# không hiểu lầm. Nếu không rành tiếng Anh mà cố dùng tiếng Anh để diễn giải làm người Mỹ hiểu sai ý mình thì sẽ coi như bài học đã thất bại. Đây không là nơi luyện tập khả năng tiếng Anh mà là nơi phô trương khả năng học công nghệ lập trình mới và diễn giải khả năng lập trình mới học nhưng hiệu quả cao và đầy hiệu suất.
  4. Tệp XAML phải nằm bên ngoài tệp C# (*.cs). Nhưng không nên vì thế mà tạo nhiều tệp XAML. Mục tiêu là tạo càng ít số tệp cho một bài học càng tốt. Nếu có thể nhập lại được mà không nhập lại thì coi như bài học thất bại. Điều này quan trọng khi phải quản lý hàng trăm, hàng ngàn bài học.
  5. Nếu bài yêu cầu việc làm ra những câu hỏi về hai, ba vấn đề, ví dụ, Sleep và Infinite, mà tất cả đều giải thích được trong vòng một dòng mã nguồn, ví dụ, Thread.Sleep(System.Threading.Timeout.Infinite), thì đây không phải là một bài học lập trình viên cần phải diễn giải. Cần phải gôm nó lại vào một bài học phức tạp hơn. Bằng không thì học viên người Mỹ sẽ cho rằng chúng ta có toàn là những bài học đơn giản vô giá trị cho lập trình viên đã hành nghề 6 đến 18 tháng rồi.
  6. Toàn bộ mã nguồn cho một bài học sẽ gọi StartLesson một lần duy nhất và sẽ không bao giờ xoá kết quả của chức năng đó. Điều này có nghĩa là không bao giờ gọi chức năng này nhiều lần: ClearLog.
  7. Toàn bộ mã nguồn cho một bài học sẽ gọi EndLesson một lần duy nhất và sẽ không bao giờ xoá kết quả của chức năng đó. Nếu đã gọi EndLesson rồi thì phải gọi ViewLog để cho học viên thấy kết quả thực thi bài học.
  8. Dòng mã nguồn nào cũng phải thực thi khi học viên nhấp vào hết các nút cho mã nguồn chạy. Bằng không thì, nếu có một dòng không bao giờ thực thì, bài học dư thừa nên chưa hoàn hão.

2 comments on “Cách thực hiện Mã nguồn Diễn giải Một bài học Lập trình C#

  1. Pingback: Yêu cầu Việc làm Số 1206 – WPF Command Model and MVVM « Tô Mỳ Minh Duy (CTTMMD)

  2. Pingback: Cách dạy LTV C# ở Mỹ học làm WPF theo kiểu LBL « Tô Mỳ Minh Duy (CTTMMD)

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Information

This entry was posted on 13-01-2013 by in Minh Duy.
%d bloggers like this: