sontung0
Dragon Quest
Sếp để Topic sống vài ngày rồi chuyển vào Topic [AMX] Tổng hợp Code, Plug do Mem chế hoặc giới thiệu cũng được ^^
Coding Style
Mở đầu
Đú theo phong trào hoc amx, hôm nay tí tởn post 1 bài hướng dẫn nhỏ nhỏ :)
Mình xin nói luôn là cái hướng dẫn này sẽ không giúp nâng cao trình độ AMX code của bạn đâu
+ Vậy Coding Style nó là cái gì?
- Coding Style hiểu tàm tạm là Phong cách viết code, nghĩa là viết code theo một quy tắc nào đó.
+ Hic.Học code đã bao thứ, giờ lại thêm cả cái gọi là phong cách viết code, viết code mà cũng phải có phong cách cơ à (ăn chơi nhỉ
)
- Đúng là mới đầu nghe thì cũng có vẻ hơi thừa.Nhưng khi bạn tìm hiểu thì sẽ thấy nó thực sự là có ích.Coding Style được áp dụng hầu hết cho các ngôn ngữ lập trình.vì vậy bỏ ra 1 time tìm hiểu về nó cũng không phải là phí phạm
Giờ đi vào chủ đề chính nào
The Opening Comment Block
Cái này tạm hiểu là lời giới thiệu về plugin.Nếu để ý thì các bạn sẽ thấy ở ngay đầu của 1 plugin thì thường có 1 đống comment.Nó có cấu trúc như này
[spoil]
[/spoil]
Và nhiệm vụ của nó là giúp cho người khác khi muốn tim hiểu plugin của bạn thì chỉ cần đọc mục này là sẽ hiểu được
Variables Name
Cái này tạm hiểu là cách đặt tên biến
Cách đặt tên biến thì nên thêm kí tự đại diện cho loại cũng như tính chất của biến vào đầu biến.Đối với tên biến gồm nhiều từ thì chữ cái đầu nên viết hoa
Global Variables (Biến toàn cục - tức là các biến sử dụng ở mọi vị trí)
Thêm kí tự g_ hc g vào đầu
Tương tự với dạng khác
Nào bây giờ xem thử tác dụng của em nó xem ntn
VD khi bạn nhìn thấy 1 biến là g_iData.Theo những gì bên trên thì biến này sẽ là biến toàn cục (g_) và nó có dạng integer (i), đỡ phải tìm nơi khai báo biến và biết luôn dạng của biến, cũng đại tiện đúng không
Use Constants
Đối với những hằng số thì bạn nên viết hoa tên biến
Không nên viết như này
Functions Name
Tương tự như Variables Name, Functions Name là cách đặt tên cho các function
Public Function (function mà mình đăng kí cho các event, logevent, forward, HamForward, ...)
Cách đặt tên là: <Loại>_<Tên> hc <Loại><Tên>
hoặc
(cá nhân mình thì thích cách 2 hơn
)
Stock Function, Function (chính là các function mà mình tạo)
Cách đặt tên là: <công_dụng>_<Tên> hc <công_dụng><Tên>
Đối với hàm lấy giá trị thì tiếp đầu ngữ là get
Đối với hàm lấy giá trị mà giá trị trả về là Boolean thì tiếp đầu ngữ là:
Indentation, Tabbing và Spacing
Cái này nghĩa là sử dụng Tab, Spacing trong những câu lệnh để tạo các khoảng rõ ràng trong code
Để hiểu rõ thì các bạn xem 2 VD sau:
rõ ràng là với cách thứ 2 thì code khi nhìn vào sẽ dễ nhìn, dễ đọc và dễ chỉnh sửa hơn đúng không.
Dưới đây là các cách viết code sử dụng Indentation, Tabbing và Spacing
[spoil]
[/spoil]
Commenting
Cuối cùng là phần chú thích cho code (comment)
Khi viết code thì các bạn đừng tiếc những dòng comment, comment mọi lúc mọi nơi nếu thấy cần thiết.
Những dòng comment đó sẽ giúp ích rất nhiều khi bạn sửa code sau 1 time hoặc giúp những người khác hiểu code của bạn nhanh hơn
Trước mỗi function hoặc biến thì nên có những comment ghi rõ tác dụng, tham số và giá trị trả về của nó
Lời kết
Viết code thì mỗi người một phong cách, một thói quen.Không thể gò bó tất cả mọi người viết code theo một cách nhất định được.
Ngay cả mình cũng vậy, không phải khi viết code là mình làm theo tất cả những quy tắc trên
Coding Style nhằm hướng cho Coder viết code theo một cách có hệ thống và có tổ chức
Và mục đích cuối cùng là giúp cho code khi nhìn vào sẽ Dễ Đọc -> Dễ Hiểu -> Dễ Chỉnh Sửa
Tài liệu:
http://forums.alliedmods.net/showthread.php?t=6481
http://forums.alliedmods.net/showthread.php?t=85274
Trình độ có hạn, trong bài viết có gì thiếu hay sai sót thì mọi người cứ gạch thoải mái
Giờ mới để ý đây là bài viết thứ 1000 của mình, đẹp
Coding Style
Mở đầu
Đú theo phong trào hoc amx, hôm nay tí tởn post 1 bài hướng dẫn nhỏ nhỏ :)
Mình xin nói luôn là cái hướng dẫn này sẽ không giúp nâng cao trình độ AMX code của bạn đâu

+ Vậy Coding Style nó là cái gì?
- Coding Style hiểu tàm tạm là Phong cách viết code, nghĩa là viết code theo một quy tắc nào đó.
+ Hic.Học code đã bao thứ, giờ lại thêm cả cái gọi là phong cách viết code, viết code mà cũng phải có phong cách cơ à (ăn chơi nhỉ
)- Đúng là mới đầu nghe thì cũng có vẻ hơi thừa.Nhưng khi bạn tìm hiểu thì sẽ thấy nó thực sự là có ích.Coding Style được áp dụng hầu hết cho các ngôn ngữ lập trình.vì vậy bỏ ra 1 time tìm hiểu về nó cũng không phải là phí phạm
Giờ đi vào chủ đề chính nào
The Opening Comment Block
Cái này tạm hiểu là lời giới thiệu về plugin.Nếu để ý thì các bạn sẽ thấy ở ngay đầu của 1 plugin thì thường có 1 đống comment.Nó có cấu trúc như này
[spoil]
PHP:
/*
Copyleft 2011
Plugin thread: http://forum.gamevn.com/forumdisplay.php?75-Counter-Strike
Tên Plugin
========
Description
Đây là nới viết những thông tin chung về plugin
...
Commands
Những command sử dụng trong plugin và tác dụng của chúng
VD:
say /give_weapon - give weapon to player
....
Credits
Tên những người thực hiện plugin
VD:
sontung0 - Author
sontung0 - Testing help
^^
Changelog:
Những cập nhật mới cũng như lỗi bug đã sửa
Jun 1, 2008 - v1.0 - Initial release
Jun 2, 2008 - v1.1 - [FIXED] Some repeated variables
[FIXED] Message printing incorrectly
duelists <-> players
[ADDED] God mode to normal players
*/
Và nhiệm vụ của nó là giúp cho người khác khi muốn tim hiểu plugin của bạn thì chỉ cần đọc mục này là sẽ hiểu được
Variables Name
Cái này tạm hiểu là cách đặt tên biến
Cách đặt tên biến thì nên thêm kí tự đại diện cho loại cũng như tính chất của biến vào đầu biến.Đối với tên biến gồm nhiều từ thì chữ cái đầu nên viết hoa
Global Variables (Biến toàn cục - tức là các biến sử dụng ở mọi vị trí)
Thêm kí tự g_ hc g vào đầu
PHP:
new gMyVariable
new g_MyOtherVariable
- i - integers/cells
- f hoặc fl - floats
- s hoặc st - strings
- b - bools
- v - vectors
PHP:
// a global cell
new g_iKills
// a global float
new Float:g_flSpeed
// a string
new sMyString[]
// a bool
new bool:bFlag
// a vectors
new vMyVector[3]
VD khi bạn nhìn thấy 1 biến là g_iData.Theo những gì bên trên thì biến này sẽ là biến toàn cục (g_) và nó có dạng integer (i), đỡ phải tìm nơi khai báo biến và biết luôn dạng của biến, cũng đại tiện đúng không

Use Constants
Đối với những hằng số thì bạn nên viết hoa tên biến
PHP:
#define MAX_ITEMS 10
PHP:
#define max_items 10
Functions Name
Tương tự như Variables Name, Functions Name là cách đặt tên cho các function
Public Function (function mà mình đăng kí cho các event, logevent, forward, HamForward, ...)
Cách đặt tên là: <Loại>_<Tên> hc <Loại><Tên>
PHP:
register_event( "HLTV", "EventHLTV", "a", "1=0", "2=0" ) // EventHLTV
register_logevent( "LogEventRoundEnd", 2, "1=Round_End" ) // LogEventRoundEnd
register_forward( FM_PlayerPostThink, "ForwardPlayerPostThink" ) // ForwardPlayerPostThink
register_clcmd( "primammo", "CmdPrimAmmo" ) // CmdPrimAmmo
RegisterHam( Ham_Spawn, "player", "HamSpawn", 1 ) // HamSpawn
PHP:
register_event( "HLTV", "Event_HLTV", "a", "1=0", "2=0" ) // Event_HLTV
register_logevent( "LogEvent_RoundEnd", 2, "1=Round_End" ) // LogEvent_RoundEnd
register_forward( FM_PlayerPostThink, "Forward_PlayerPostThink" ) // Forward_PlayerPostThink
register_clcmd( "primammo", "Cmd_PrimAmmo" ) // Cmd_PrimAmmo
RegisterHam( Ham_Spawn, "player", "Ham_Spawn", 1 ) // Ham_Spawn
)Stock Function, Function (chính là các function mà mình tạo)
Cách đặt tên là: <công_dụng>_<Tên> hc <công_dụng><Tên>
Đối với hàm lấy giá trị thì tiếp đầu ngữ là get
Đối với hàm lấy giá trị mà giá trị trả về là Boolean thì tiếp đầu ngữ là:
- is - nếu theo sau là tính từ
- has - nếu sau là danh từ
- can - nếu sau là động từ
PHP:
getUserName()
isUserAlive()
hasWeapon()
canDropWeapon()
setUserHealth()
Indentation, Tabbing và Spacing
Cái này nghĩa là sử dụng Tab, Spacing trong những câu lệnh để tạo các khoảng rõ ràng trong code
Để hiểu rõ thì các bạn xem 2 VD sau:
PHP:
public some_function(id){
new szVariable[10]
format(szVariable,9,"hello!!!!")
if(id==0){
server_print(szVariable)
}else{
client_print(id,print_chat,szVariable)
}
return PLUGIN_HANDLED
}
PHP:
public some_function( id )
{
new szVariable[10];
format( szVariable, 9, "hello!!!!" );
if ( id == 0 )
{
server_print( szVariable );
}
else
{
client_print( id, print_chat, szVariable );
}
return PLUGIN_HANDLED;
}
Dưới đây là các cách viết code sử dụng Indentation, Tabbing và Spacing
[spoil]
PHP:
// public function
public FunctionName( param1, param2, param3 )
{
// code here...
}
// function
FunctionName( param1, param2, param3 )
{
// code here...
}
// if else
if ( iparam1 == 0 || param2 > 0 || ( param3 - param4 > 0 ) )
{
// code here...
}
else
{
// code here...
}
// for
for ( new i; j < 100; j++ )
{
// code here
}
// switch
switch( variable )
{
case 0:
{
// code here
}
default:
{
// code here
}
}
// while
while( Function() )
{
// code here
}
// do while
do
{
//this code will be executed at least once, and more until Function() returns false
}
while( Function() )
// array
new gCosts[MAX_WEAPONS] =
{
2750,
300,
3000
}
new gSounds[SOUNDS][] =
{
"items/suitchargeno1.wav",
"cstactics/commander_attack.wav",
"cstactics/commander_defend.wav"
}
// enum
enum ORDERS
{
NONE,
ATTACK,
DEFEND,
EQUIP
}
Commenting
Cuối cùng là phần chú thích cho code (comment)
Khi viết code thì các bạn đừng tiếc những dòng comment, comment mọi lúc mọi nơi nếu thấy cần thiết.
Những dòng comment đó sẽ giúp ích rất nhiều khi bạn sửa code sau 1 time hoặc giúp những người khác hiểu code của bạn nhanh hơn
Trước mỗi function hoặc biến thì nên có những comment ghi rõ tác dụng, tham số và giá trị trả về của nó
PHP:
/**
* Returns a single cell of data from an array.
* Use this only with arrays that were created with a cellsize of 1!
*
* @param which The array to retrieve the item from.
* @param item The item to retrieve (zero-based).
* @return The value of the cell.
*/
native any:ArrayGetCell(Array:which, item);
Lời kết
Viết code thì mỗi người một phong cách, một thói quen.Không thể gò bó tất cả mọi người viết code theo một cách nhất định được.
Ngay cả mình cũng vậy, không phải khi viết code là mình làm theo tất cả những quy tắc trên
Coding Style nhằm hướng cho Coder viết code theo một cách có hệ thống và có tổ chức
Và mục đích cuối cùng là giúp cho code khi nhìn vào sẽ Dễ Đọc -> Dễ Hiểu -> Dễ Chỉnh Sửa
Tài liệu:
http://forums.alliedmods.net/showthread.php?t=6481
http://forums.alliedmods.net/showthread.php?t=85274
Trình độ có hạn, trong bài viết có gì thiếu hay sai sót thì mọi người cứ gạch thoải mái
Giờ mới để ý đây là bài viết thứ 1000 của mình, đẹp

Chỉnh sửa cuối:

)