C++的friend關鍵字實現了軟體工程

很多書本教你的 不要使用 friend,  結果意外的被我發現新方法, 就是大量的使用friend.

因為我不寫繼承的, 所以會有很多class, 之前整理程式碼, 發現閱讀code有些費時,
不知要從哪裡下手.

突然閃過一個念頭, friend 根本是救星.

經過一個多月整理程式碼的心得:

這是程式碼裡的:

class CShadowRole
{
private:
//*** 這裡面有7個變數,  12個函數, 看起來也算蠻大的class ***//

    public:
    CShadowRole()
    {
        m_nRole=0;     for(int i=0; i<MAX_PLAYER; i++)m_szRole[i].pRole=NULL;
    }

    friend class CGame;
    friend void interface_ShadowRole_AddRole( class  CViewFrustum *pCull, class CMyRole *pMyRole, int idModel, BYTE wpn, float time );
};


看到沒有, public 只有一個 初始的, 剩下甚麼都沒有 有兩個 friend.
 
這樣的class幾乎是沒有用的, 但是那兩個 friend 就是重點了,
沒錯,  這個class CShadowRole 只在 class Game裡面使用 跟那個函數裡使用
其他都不能使用.

這樣不是很清楚嗎? 一看到這個class 的宣告 就一目了然 這個 class的使用方法.

所有要存取 CShadowRole必須來這裡宣告firend 才可以使用.
就很容易看出class 彼此之間的關係.

---------------------------------------------------------------------------------------------------------
但是 上面是理想的狀態,  但是 有一個致命的缺點  就是會有一大串的friend,

這就沒有意義了.

-------------------------------------------------------------------------------------------------

所以C++的對於類別成員的封裝 太爛了 只有兩種 private, 跟 public.

應該再增加一個封裝的關鍵字: 也是取名叫做 friend.

宣告為 friend function 跟 friend class, 可以存取宣告 friend 跟public內的函數或是變數.


這樣  friend 真的就會實現 軟體工程的方法.








沒有留言:

張貼留言