锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
class Actor;
class ActorManager
{
public:
void update()
{
for (actors_t::const_iterator itr = m_actors.begin(); itr != m_actors.end(); ++itr)
{
Actir* actor = itr->second;
actor->update();
}
}
void add(Actor* actor)
{
m_actors[actor->get_id()] = actor;
}
void remove(Actor* actor)
{
m_actors.erase(actor->get_id());
}
private:
typedef std::map<int, Actor*> actors_t;
actors_t m_actors;
};
鑰孉ctor綾葷殑瀹炵幇鏄繖鏍鳳細
class Actor
{
public:
void update()
{
// ...
}
鏈変竴澶╋紝鍦ㄧ粰Actor娣誨姞閫昏緫鐨勬椂鍊欙紝update鍑芥暟鍙樻垚浜嗚繖鏍?/font>
void update()
{
// ...
update_buff_effect();
// ...
}
鍐嶅線涓?/font>
class Actor
{
// ...
private:
void update_buff_effect()
{
// ...
apply_hp(-100);
if (get_hp() <= 0)
{
die();
return;
}
// ...
}
鐒跺悗……
private:
void die()
{
// ...
ActorManager::getInstance().remove(this);
// ...
}
鍦ㄥ啓涓婣ctorManager鐨勬椂鍊欏茍娌℃湁鎯沖埌浼氬湪update寰幆閲屽垹闄ゅ璞★紝鑰屽疄闄呬笂鍗存湁鍑犳閬囧埌綾諱技鐨勯棶棰樸?/font>
鏈変簺闂娌℃湁榪欎箞鏄庢樉錛屼絾涔熼兘鏄嚭鍦ㄩ亶鍘嗗鍣ㄥ璞$殑榪囩▼涓紝鏌愪釜鎵ц鍑芥暟鍒犻櫎浜嗙獥鍙i噷鐨勫璞★紝浠庤屽鑷磋凱浠e櫒澶辨晥銆?/font>
淇敼鐨勬柟娉曞緢綆鍗曪紝緇橝ctorManager娣誨姞涓涓緟鍒犻櫎瀵硅薄鍒楄〃
鍦╮emove鏂規硶涓茍涓嶇湡姝e垹闄ゅ璞★紝鑰屾槸絳夊埌update涓驚鐜粨鏉熷悗鍐嶅垹闄ゅ璞°?/font>
浠g爜鐪嬭搗鏉ヤ細鏄繖鏍鳳細
class Actor;
class ActorManager
{
public:
void update()
{
m_is_looping = true;
for (actors_t::const_iterator itr = m_actors.begin(); itr != m_actors.end(); ++itr)
{
Actir* actor = itr->second;
actor->update();
}
m_is_looping = false;
if (!m_removed_actors.empty())
{
for (removed_actors_t::const_iterator itr = m_removed_actors.begin();
itr != m_removed_actors.end(); ++itr)
{
Actor* actor = *itr;
m_actors.erase(actor->get_id());
}
m_removed_actors.clear();
}
}
void add(Actor* actor)
{
m_actors[actor->get_id()] = actor;
}
void remove(Actor* actor)
{
if (!m_is_looping)
m_actors.erase(actor->get_id());
else
m_removed_actors.push_back(actor);
}
private:
typedef std::map<int, Actor*> actors_t;
actors_t m_actors;
typedef std::vector<Actor*> removed_actors_t;
removed_actors_t m_removed_actors;
bool m_is_looping;
};
娌℃湁緇檃dd涔熷姞淇濇姢鐨勫師鍥犳槸錛屼笉浼氬湪update鍑芥暟鍐呭悜ActorManager娣誨姞鏂板璞°?/font>
褰撶劧錛屾湁鍙兘鍦ㄥ叾浠栧湴鏂逛細鏈夎繖鏍風殑闇姹傦紝鍚屾牱涔熷仛綾諱技鐨勪繚鎶ゅ嵆鍙?/font>
闂铏界劧涓嶅ぇ錛屼絾鏄嚑嬈$鍒扮被浼肩殑閿欒浜嗐傝褰曚箣錛屽茍寮哄埗瑕佹眰鑷繁錛?/font>
鍦ㄩ亣鍒頒細瀵瑰鍣ㄥ唴鐨勫璞″仛for…澶勭悊鏃訛紝涓瀹氳璋ㄦ厧鐨勬鏌ヤ竴涓媟emove鎺ュ彛銆?/font>
鍛藉悕瑙勮寖錛?/font>
榪欎簺鍙湁鍦ㄧ敤浜庡叕寮鏆撮湶緇欏鐣岀殑API鏃舵墠鏄繀闇鐨?/font>
鏍囪瘑絎﹀ぇ灝忓啓瑙勫垯錛?/font>
1.瑕佹妸PascalCasing鐢ㄤ簬鐢卞涓崟璇嶆瀯鎴愮殑鍚嶅瓧絀洪棿錛岀被鍨嬩互鍙婃垚鍛樼殑鍚嶅瓧
2.瑕佹妸camelCasing鐢ㄤ簬鍙傛暟鐨勫悕瀛?/font>
3.涓嶈鎶婇棴鍚堝艦寮忕殑澶嶅悎璇嶄腑姣忎釜鍗曡瘝鐨勯瀛楁瘝澶у啓錛屾瘮濡?callback, endpoint 絳夌瓑錛屽彲浠ユ煡闃呰嫳璇瘝鍏告潵紜畾澶嶅悎璇嶆槸涓嶆槸闂悎鐨?/font>
4.涓嶈浣跨敤鍖堢墮鍒╁懡鍚嶆硶銆傚師鍥犳湁鍑犵偣錛屼竴鏄彂鏄庡畠鐨刴s鍏徃閮藉凡緇忔槑紜姹傚湪鏂扮殑搴撳湪涓嶈浣跨敤榪欑鍛藉悕娉曪紝浜屾槸鍙橀噺鍚嶅墠鍔犵被鍨嬫爣璇嗙鏄釜寰堜笉濂界殑涔犳儻錛屽湪寮鍙戣繃紼嬩腑鏈夊彲鑳戒細闅忔椂淇敼榪欎簺鍙橀噺鐨勭被鍨嬪畾涔夛紝涓夋槸鏂扮殑緙栬緫鍣ㄤ腑涓嶉渶瑕佺敤m_鍓嶇紑鏉ョ‘瀹氬叾綾誨瀷錛屼笉榪囧浜庡唴閮ㄥ疄鐜扮殑鍙橀噺鏉ヨ錛岀敤涓涓墠緙涔熻浼氳鍙橀噺鐨勬煡鎵炬洿鏂逛究錛屾瘮濡傜敤涓涓猒鍓嶇紑
5.涓嶈浣跨敤鏈騫挎硾鎺ュ彈鐨勯瀛楁瘝緙╁啓璇嶏紝濡備綍紜畾鏌愪釜緙╁啓璇嶆槸鍚︿紬鎵鍛ㄧ煡鏈変釜濂芥柟娉曪紝鍒癵oogle涓婃悳绱竴涓嬶紝濡傛灉鍓嶅嚑鏉¢兘鏄綘鎵鏈熸湜鐨勫唴瀹癸紝閭d箞瀹冨氨鏄紬鎵鍛ㄧ煡鐨勪簡
鍏充簬鍛藉悕錛?/font>
1.瑕佺敤鍚嶈瘝鎴栧悕璇嶇煭璇潵緇欑被鍜岀粨鏋勪綋鍛藉悕錛屼嬌鐢≒ascalCasing鐨勫ぇ灝忓啓椋庢牸錛岀被鍚嶅瓧涓嶈鍔?C錛屼絾鏄帴鍙e墠闇瑕佸姞 I錛岃繖鏄釜鐗逛緥
2.鐢ㄥ艦瀹硅瘝鐭鏉ョ粰鎺ュ彛鍛藉悕錛屽湪灝戞暟鎯呭喌涓嬩篃鍙互浣跨敤鍚嶈瘝鎴栧悕璇嶇煭璇?/font>
3.鑰冭檻鍦ㄦ淳鐢熺被鐨勬湯灝句嬌鐢ㄥ熀綾葷殑鍚嶅瓧錛屾瘮濡?class FileStream : public Stream
4.鐢ㄥ姩璇嶆垨鍔ㄨ瘝鐭鏉ュ懡鍚嶆柟娉曪紝姣斿 int CompareTo();
5.瑕佺敤鑲畾鎬х殑鐭(CanSeek鑰屼笉鏄疌antSeek)鏉ュ懡鍚嶅竷灝斿睘鎬э紝鍙互鍔營s,Can,Has絳夊墠緙錛岃紜繚浣跨敤鏃剁殑嫻嬭瘯璇彞璇昏搗鏉ラ氶『錛屾瘮濡?/font>
if (collection.Contains(item)) 灝辨瘮 if (collection.IsContained(item)) 瑕侀氶『寰楀
姝ゅ錛岃浼樺厛閫夋嫨涓誨姩璇佽屼笉鏄鍔ㄨ鎬侊紝姣斿
if (stream.CanSeek()) 灝辨瘮 if (steam.IsSeekable()) 瑕佸己寰楀
6.瑕佺敤鐜板湪鏃跺拰榪囧幓鏃舵潵璧嬩簣浜嬩歡鍚嶄互涔嬪墠鍜屼箣鍚庣殑姒傚康錛屼笉瑕佺敤Before鎴朅fter榪欐牱鐨勫墠鍚庣紑錛屾瘮濡?Closing, Closed鑰屼笉鏄疉fterClose
浣跨敤瑙勮寖錛?/font>
1.浼樺厛浣跨敤闆嗗悎錛岄伩鍏嶄嬌鐢ㄦ暟緇?/font>
2.鑰冭檻浣跨敤涓嶈鍒欐暟緇勶紝鑰屼笉瑕佷嬌鐢ㄥ緇存暟緇勶紝涔熷氨鏄紭鍏堜嬌鐢╥nt [][] jagedArray榪欐牱鐨勬暟緇勶紝閬垮厤浣跨敤 int [,] multiDimArray榪欐牱鐨勭被鍨?/font>
3.瑕佺敤鏈娉涚殑綾誨瀷鏉ヤ綔涓哄弬鏁扮被鍨嬶紝澶у鏁頒互闆嗗悎涓哄弬鏁扮殑鎴愬憳閮戒嬌鐢↖Enumerable<T> 鎺ュ彛