Từ 1 tới 4 trên tổng số 4 kết quả

Đề tài: Cách đặt tên trong lập trình thật sự khoa học - Professional ?

  1. #1
    Ngày gia nhập
    09 2015
    Bài viết
    3

    Mặc định Cách đặt tên trong lập trình thật sự khoa học - Professional ?

    Chào mọi người!

    Mình là người mới tiếp cận lập trình nói chung ngôn ngữ C nói riêng. Qua các bài tập trên lớp thì mình thấy cách đặt tên biến, hàm của mình thấy nó cùi cùi sao ấy toàn là đặt tên tiếng việt lung tung beng. vd: hàm: kt_snt(), demSoduong(),... biến: dem,tong,i,j... Nói chung là nhiều lắm.
    Click vào hình ảnh để lấy hình ảnh lớn

Tên:		f492b0e8da419e5b52292a90887566b1.jpg
Lần xem:	1
Size:		50.2 KB
ID:		40131
    Ý mình muốn là cách đặt tên sao cho chuyên nghiệp, có lòng tiếng anh vào và đúng ngữ cảnh. Mà không biết cách. vd: isum, total, sum,.. chẳng hạn, đọc code người khác mà thấy ghiền lun
    Bác nào có tài liệu tiếng anh về IT hay góp ý cho mình để sao này hình thành thói quen - phong cách lập trình tốt hơn.

    Mình cảm ơn.

  2. #2
    Ngày gia nhập
    07 2006
    Nơi ở
    Hanoi, Vietnam
    Bài viết
    2,760

    Đây là 1 vấn đề thú vị, Kevin xin comment để đẩy nó lên để mọi người có thể thảo luận thêm.
    Hiện tại thì chỉ có 1 số cái guide để đặt tên chứ không có "how to"

    Một số điểm sau đây bạn có thể cần chú ý để bạn đặt tên 1 cách tốt nhất.
    1. Cần đặt tên làm sao ngắn gọn, xúc tích
    2. Tuân thủ naming convention và các principles như là SOLID, KISS, ...
    3. Am hiểu tốt và đúng đắn về hướng đối tượng

    Bạn cũng có thể tìm và tham khảo các Best Pratices và 1 số sách như là Clean Code hoặc The Art of Readable Code.
    Email: kevin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
    Phone: 0972 89 7667

    Một người nào đó coi thường ý thức kỷ luật cũng có nghĩa là người đó đã coi thường tương lai số phận của chính bản thân người đó.
    Những người coi thường ý thức kỷ luật sẽ không bao giờ có được sự thành công trong sự nghiệp hoặc bị sự thiếu kỷ luật làm tiêu tan sự nghiệp.

  3. #3
    Ngày gia nhập
    02 2014
    Nơi ở
    TP.HCM
    Bài viết
    1,005

    Lúc ban đầu khi mới học C, bạn sẽ thường thấy các biến được đặt như : sum, total,... Do các giáo trình chủ yếu dùng để nêu bật lên giải thuật hoặc các đoạn mã chỉ có một số ít dòng lệnh và thường chỉ là Console, điều này làm cho các "nhà lập trình" lười đến mức đặt luôn tên chỉ 1 ký tự cho biến như n, h... Và nếu cứ giữ cách đặt tên như vậy, bạn sẽ lúng túng khi bắt đầu viết các chương trình chạy thực. Theo tôi, cách đặt tên trong các giáo trình là không khoa học nếu không muốn nói là phản khoa học.
    Trong các chương trình GUI - đặc biệt là Windows - Các LTV bắt đầu dùng thêm các tiếp đầu ngữ hàm ý chỉ ra kiểu dữ liệu của biến. Ví dụ như biến chỉ số lượng tổng có thể đặt tên như dwSum (cho lưu trữ 4 bytes - DWORD) hay wSum (lưu trữ 2 bytes - WORD) hoặc nSum (số nguyên); các con trỏ thì thường là thêm p ở phía trước: pSum, pdwSum, pwSum, pnSum. Ở mức này các LTV cũng thường thêm tiếp đầu ngữ g_ cho các biến toàn cục như : g_pSum, g_dwSum, g_pdwSum. Các biến cấu trúc thường lấy vài từ viết tắt của cấu trúc làm tiếp đầu ngữ ví dụ: kiểu cấu trúc Dimention có dài rộng cao thì có thể khai báo như : typedef struct DIMENTION { int nLength, nWidth, nHeight }; và biến có thể đạt như DIMENTION dmtBox;. Đây là cách đặt tên từ một LTV kỳ cựu của Microsoft người Hung-Ga-Ri.
    Khi bạn bắt đầu tiếp xúc với lập trình OOP, bạn sẽ nhận thấy các tiếp đầu ngữ có thể bao gồm cả hàm ý giới hạn hoạt động của biến. Ví dụ 1 trường của lớp có thể có tên như m_pdwSum trong khi biến cục bộ của hàm là pdwSum. Song song đó người ta cũng thường dùng cú pháp lạc đà (thường trong C#) cho các biến; ở cách đặt tên này một tên bắt đầu bằng một từ viết thường các từ sau viết hoa chữ cái đầu ví dụ: sumMoney, sumStudent, sumClotherStyle.
    Một cách tổng quát thì không có một quy tắc rõ ràng nào được định chuẩn, bạn đang lập trình trên ngôn ngữ nào thì nên đặt tên theo cách mà mã nguồn các chương trình lớn ngôn ngữ đó đặt tên, đơn giản là nó được nhiều người sử dụng và quá trình đọc mã và trao đổi với nhau dễ dàng.

    Vài thông lệ về tiếp đầu ngữ mà tôi thường sử dụng lập trình C\C++
    1. Biến cục bộ và tham số của hàm / phương thức, sử dụng cú pháp Hungary:
    int nCount;
    DWORD dwColor;
    vector<DWORD> vtColors;
    vector<PDWORD> vtpColors;
    vector<DWORD> * pvtColors;
    2. Biến, hằng thành viên của lớp : DWORD m_dwColor; vector<DWORD> * m_pvtColors;
    3. Biến, hằng toàn cục : DWORD g_dwColor; vector<DWORD> * g_pvtColors;
    4. Kiểu dữ liệu cấu trúc : typedef struct { DWORD MasterColor; vector<DWORD> SlaverColors; } MYCOLOR, *PMYCOLOR; Tên kiểu chữ in.
    5. Kiểu con trỏ hàm : typedef void(WINAPI * PSAVECALLWND) (HWND); Tên kiểu chữ in.
    6. Tên phương thức public lớp : int GetNumColors(...) {...}
    7. Tên phương thức private/protected lớp : int getNumColors(...) {...}
    8. Khai báo thuộc tính (VC++) : __declspec(property(get = _getName, put = _setName)) wstring Name;
    9. Tên phương thức Get/Set cho thuộc tính : wstring _getName() { return m_strName; }. void _setName(wstring name) { m_strName = name; }
    10. Các hàm toàn cục dạng hành vi hay hiển thị - Viết hoa ký tự đầu của một từ : void MoveHorzCell(CCell * pCell, int dx) {...}
    11. Các hàm toàn cục dạng tính toán - đưa nó vào một lớp với bổ từ public static :
    class csf // lớp này nên ngắn gọn viết thường (csf: viết tắt ClassStaticFunctions hay cgf: ClassGlobalFunctions, cmisc/cm: Linh tinh)
    {
    public:
    static wstring toString(double value) {...}
    static bool isHex(char ch) {...}
    ////
    };
    12. Các định nghĩa - chữ in: #define MAXNUMCOLUMNS 50
    13. Các lớp - theo MFC:
    class CCard {...}; // Lá bài
    class CCardK : public CCard {...}; // Con già
    class CCardKD : public CCardK {...}; // Con già rô
    14. Các giao diện (VC++):
    __interface IDomino {...}; // Giao diện Domino

    Để tìm tên tương đối phù hợp thì nên bật gu_gồ_tren gõ tên Việt vào phần tiếng Việt để xem các từ đồng nghĩa bên tiếng Anh, tìm được từ khoảng 4->6 ký tự là đẹp nhất. Ví dụ gõ <nhận>/<nhận về>/<thu về> ta được Received/Take/Intake, tôi sẽ lấy từ Take.

    Mời các bạn khác tham gia .
    .
    .
    .

  4. #4
    Ngày gia nhập
    07 2006
    Nơi ở
    Hanoi, Vietnam
    Bài viết
    2,760

    Style chỉ là 1 phần để giúp code dễ đọc hơn, tuy nhiên là thế giới công nghệ đã thay đổi với sự hỗ trợ mạnh mẽ của các IDE vì thế style đã được giải quyết tự động và việc thêm tiền tố để xác định kiểu dữ liệu dần dần ít quan trọng, nhất là các ngôn ngữ mới hiện nay.

    Hiện tại 1 project càng ngày càng phức tạp với lượng code khổng lồ, vì thế giờ cũng không còn chú trọng vào việc comment mọi code nữa mà thay vào đó là việc đặt tên biến, method trở lên quan trọng hơn, kết hợp với viết document cho mỗi class hoặc method. Đồng thời tuân thủ 1 số principles sẽ làm code dễ hiểu hơn.

    Một số điểm đáng lưu ý là:
    - method/function thể hiện là hành động do đó nó nên bắt đầu là động từ để thể hiện nó sẽ làm gì.
    - tên biến, properties là thể hiện lưu trữ cái gì vì thế tên sẽ thể hiện là cái gì thay vì nó làm gì như nhiều developer vẫn đặt.

    Đây vẫn là đề tài cực kỳ thú vị, mọi người có thể thảo luận thêm để giúp ai ai cũng có thể làm tốt.
    Email: kevin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
    Phone: 0972 89 7667

    Một người nào đó coi thường ý thức kỷ luật cũng có nghĩa là người đó đã coi thường tương lai số phận của chính bản thân người đó.
    Những người coi thường ý thức kỷ luật sẽ không bao giờ có được sự thành công trong sự nghiệp hoặc bị sự thiếu kỷ luật làm tiêu tan sự nghiệp.

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn