10/10/2018, 11:45
Cách khám phá, đọc hiểu một mã nguồn PHP
Tự nói một chút về kinh nghiệm, tôi có tìm hiểu một số mã nguồn, ví dụ như Wordpress, và có thời gian training cho nhóm CodeAndMore của anh tiendx2002 ( http://www.ddth.com/showthread.php/325883 )
Sau đây là kinh nghiệm của cá nhân tôi, nếu bạn nào có kinh nghiệm tốt hơn, hoặc kinh nghiệm khác, thì chia sẻ nhé.
A. Để khám phá một mã nguồn mới, chúng ta cần
1- Có kiến thức PHP & MySQL cơ bản
2- Tự bạn đã code được một trang web đơn giản (có thể là 2, 3 bảng, mỗi bảng vài trường), sử dụng PHP thuần (không dùng framework)
3- Nên biết một chút về OOP (lập trình hướng đối tượng) và MVC (tìm đọc vài ví dụ nhỏ về 2 cái đó, nếu muốn HIỂU MỘT CHÚT thì không khó lắm)
B. Các bước đọc hiểu:
1- Đừng có đọc code ngay, hãy cài đặt nó lên
2- Xem xét và ghi lại trạng thái ban đầu của database
3- Sử dụng nó một thời gian
4- Xem xét các thay đổi ở admin (đổi cấu hình, thêm bài ...) ảnh hưởng đến database ra sao
5- Theo dõi cách các file gọi nhau thế nào. Bắt đầu từ file index.php, lần dần dần theo include, required ... để hiểu cách làm của tác giả (cần biết chút về OOP, MVC)
6- Đọc chức năng các hàm (đọc được bao nhiêu thì đọc, không cần nhớ, vì nó sẽ có thể có vài trăm đến vài ngàn hàm, nhớ không xuể, nhớ được chừng nào thì nhớ thôi, nói chung cái gì gặp nhiều thì tự nó nhớ, hãy để mọi việc tự nhiên)
7- Download các ví dụ về theme, plugin ....
8- Tìm cách thay đổi các ví dụ
9- Chế ra các theme, plugin đơn giản (càng đơn giản càng tốt, vài dòng là ok nhất) dựa vào các ví dụ đó
10- Sử dụng các công cụ search in files (Notepad++ cũng có, mà search hơi chậm) để tìm các hàm được dùng ở những đâu
11- Sử dụng các công cụ debug như: các hàm có sẵn của PHP (var_dump, echo, print_r), các công cụ debug mạnh hơn chút (kint, xDebug... tôi khá thích Kint) để xuất ra và theo dõi các biến
12- Tham gia các cộng đồng có liên quan đến mã nguồn đó để hỏi khi cần
13- Đọc tài liệu liên quan đến mã nguồn đó (thường mã nguồn nào cũng có tài liệu cả), nên nhớ là lúc này mới đọc chứ ko phải là vừa vớ được mã nguồn là đọc tài liệu luôn.
14- Tiếp tục search, debug và viết các plugin phức tạp hơn, trong quá trình đó bạn cũng sẽ hiểu về Core hơn
C. Qua quá trình trên, bạn sẽ hiểu được:
1- Database của mã nguồn đó có những bảng gì, trường gì (và cái nào là chính, là quan trọng)
Các file trong mã nguồn gọi nhau (require, include) ra sao
2- Những biến nào là quan trọng
3- Cơ chế hook, theme, plugin của mã nguồn đó thế nào
4- Lần tìm hiểu mã nguồn đầu tiên sẽ khá vất vả (có thể mất vài tháng, và đôi khi để thay đổi chút xíu, ví dụ thêm 1 chữ vào 1 chỗ bạn muốn, có thể mất cả ngày), nhưng lần tìm hiểu sau sẽ đơn giản hơn và bạn càng kinh nghiệm thì việc tìm hiểu các mã nguồn mới sẽ càng nhanh.
D. Tôi gợi ý vài mã nguồn mà bạn có thể tìm hiểu:
1- Frameworks: CodeIgniter, Yii, Zend ...
2- Apps: Wordpress, Drupal, Joomla, ...
Việc tìm hiểu một mã nguồn mới khá tốn thời gian, nên hãy cân nhắc, nếu bạn đặc biệt có hứng thú và/hoặc tương lai mã nguồn đó có ứng dụng thì mới tìm hiểu
E. Bạn chọn cái gì thì phụ thuộc vào:
1- Trình độ của bạn hiện tại: đã biết gì rồi?
2- Nhu cầu của bạn hiện tại: đang cần làm gì?
3- Hứng thú của bạn: thích cái gì?
4- Nhu cầu tương lai của bạn: sẽ vào công ty nào làm? sẽ làm trong thị trường nào?
P/S: cái poll lỗi chính tả chút nhưng VBB ko cho sửa poll thì phải
Ý kiến của thienha20
1. muốn đục code thì phải xét sơ cấu trúc nó trước đã sau đó tùy vào yêu cầu mà bắt đầu đục chứ bắt down cái FW hay CMS về mà xem code nó thì xem được vài hôm thì ì ra đó. Có yêu cầu mới có động lực phá code người khác theo ý mình.
2. Đục code cái wan trọng nhất là bạn cần có 1 cái editor pro + google.
3. Nói chung trước khi đục bạn cần nắm vững cơ bản về lập trình và sql, đọc vài tài liệu về cách debug và dùng 1 số addon hỗ trợ trình duyệt trong debug. Viết web thì không chỉ đục mỗi cái ngôn ngữ server và sql, bạn cần biết đục cả html, lẫn js + css.
4. Không phải code nào nói muốn đục là đục đâu tùy code họ có hướng mở cho mà đục hay không. Viết theo kiểu hầm bà lằn của coder lơ mơ mò có mà chết đọc vài dòng tức đến chết hết muốn đọc tiếp
Sau đây là kinh nghiệm của cá nhân tôi, nếu bạn nào có kinh nghiệm tốt hơn, hoặc kinh nghiệm khác, thì chia sẻ nhé.
A. Để khám phá một mã nguồn mới, chúng ta cần
1- Có kiến thức PHP & MySQL cơ bản
2- Tự bạn đã code được một trang web đơn giản (có thể là 2, 3 bảng, mỗi bảng vài trường), sử dụng PHP thuần (không dùng framework)
3- Nên biết một chút về OOP (lập trình hướng đối tượng) và MVC (tìm đọc vài ví dụ nhỏ về 2 cái đó, nếu muốn HIỂU MỘT CHÚT thì không khó lắm)
B. Các bước đọc hiểu:
1- Đừng có đọc code ngay, hãy cài đặt nó lên
2- Xem xét và ghi lại trạng thái ban đầu của database
3- Sử dụng nó một thời gian
4- Xem xét các thay đổi ở admin (đổi cấu hình, thêm bài ...) ảnh hưởng đến database ra sao
5- Theo dõi cách các file gọi nhau thế nào. Bắt đầu từ file index.php, lần dần dần theo include, required ... để hiểu cách làm của tác giả (cần biết chút về OOP, MVC)
6- Đọc chức năng các hàm (đọc được bao nhiêu thì đọc, không cần nhớ, vì nó sẽ có thể có vài trăm đến vài ngàn hàm, nhớ không xuể, nhớ được chừng nào thì nhớ thôi, nói chung cái gì gặp nhiều thì tự nó nhớ, hãy để mọi việc tự nhiên)
7- Download các ví dụ về theme, plugin ....
8- Tìm cách thay đổi các ví dụ
9- Chế ra các theme, plugin đơn giản (càng đơn giản càng tốt, vài dòng là ok nhất) dựa vào các ví dụ đó
10- Sử dụng các công cụ search in files (Notepad++ cũng có, mà search hơi chậm) để tìm các hàm được dùng ở những đâu
11- Sử dụng các công cụ debug như: các hàm có sẵn của PHP (var_dump, echo, print_r), các công cụ debug mạnh hơn chút (kint, xDebug... tôi khá thích Kint) để xuất ra và theo dõi các biến
12- Tham gia các cộng đồng có liên quan đến mã nguồn đó để hỏi khi cần
13- Đọc tài liệu liên quan đến mã nguồn đó (thường mã nguồn nào cũng có tài liệu cả), nên nhớ là lúc này mới đọc chứ ko phải là vừa vớ được mã nguồn là đọc tài liệu luôn.
14- Tiếp tục search, debug và viết các plugin phức tạp hơn, trong quá trình đó bạn cũng sẽ hiểu về Core hơn
C. Qua quá trình trên, bạn sẽ hiểu được:
1- Database của mã nguồn đó có những bảng gì, trường gì (và cái nào là chính, là quan trọng)
Các file trong mã nguồn gọi nhau (require, include) ra sao
2- Những biến nào là quan trọng
3- Cơ chế hook, theme, plugin của mã nguồn đó thế nào
4- Lần tìm hiểu mã nguồn đầu tiên sẽ khá vất vả (có thể mất vài tháng, và đôi khi để thay đổi chút xíu, ví dụ thêm 1 chữ vào 1 chỗ bạn muốn, có thể mất cả ngày), nhưng lần tìm hiểu sau sẽ đơn giản hơn và bạn càng kinh nghiệm thì việc tìm hiểu các mã nguồn mới sẽ càng nhanh.
D. Tôi gợi ý vài mã nguồn mà bạn có thể tìm hiểu:
1- Frameworks: CodeIgniter, Yii, Zend ...
2- Apps: Wordpress, Drupal, Joomla, ...
Việc tìm hiểu một mã nguồn mới khá tốn thời gian, nên hãy cân nhắc, nếu bạn đặc biệt có hứng thú và/hoặc tương lai mã nguồn đó có ứng dụng thì mới tìm hiểu
E. Bạn chọn cái gì thì phụ thuộc vào:
1- Trình độ của bạn hiện tại: đã biết gì rồi?
2- Nhu cầu của bạn hiện tại: đang cần làm gì?
3- Hứng thú của bạn: thích cái gì?
4- Nhu cầu tương lai của bạn: sẽ vào công ty nào làm? sẽ làm trong thị trường nào?
P/S: cái poll lỗi chính tả chút nhưng VBB ko cho sửa poll thì phải
Ý kiến của thienha20
1. muốn đục code thì phải xét sơ cấu trúc nó trước đã sau đó tùy vào yêu cầu mà bắt đầu đục chứ bắt down cái FW hay CMS về mà xem code nó thì xem được vài hôm thì ì ra đó. Có yêu cầu mới có động lực phá code người khác theo ý mình.
2. Đục code cái wan trọng nhất là bạn cần có 1 cái editor pro + google.
3. Nói chung trước khi đục bạn cần nắm vững cơ bản về lập trình và sql, đọc vài tài liệu về cách debug và dùng 1 số addon hỗ trợ trình duyệt trong debug. Viết web thì không chỉ đục mỗi cái ngôn ngữ server và sql, bạn cần biết đục cả html, lẫn js + css.
4. Không phải code nào nói muốn đục là đục đâu tùy code họ có hướng mở cho mà đục hay không. Viết theo kiểu hầm bà lằn của coder lơ mơ mò có mà chết đọc vài dòng tức đến chết hết muốn đọc tiếp
Bài liên quan
Dĩ nhiên nếu bạn ko có mục tiêu, vậy ko cần đọc. Dựa trên mục tiêu định ra trước thì bạn sẽ dễ định hướng được phần nào cần phải đọc, phần nào ko, và khi nào thì kết thúc công việc đọc code.
Ví dụ mình không biết về Wordpress, lần đầu tiên nhận làm Wordpress plugin mình mới đầu đọc Wordpress, sau khi đọc cái requirement của khách hàng, xác định những thứ mình cần làm trước, rồi mới đâm vào wordpress coi muốn làm như thế thì cần biết cái gì. Vì thế mình chỉ cần đọcc 3-4 file của wordpress thôi, thay vì đọc lần mò ko biết đâu mà lần.
Thêm nữa, muốn đọc code thì trước tiên bạn phải code được PHP đã, để train code thì mình nghĩ nên luyện mấy bài tập C++ trước, C++ bưởi, nhưng nhiều thứ để học và cần thiết sau này.
Về ý 2 thì chắc là bạn làm plugin đơn giản của Wordpress thôi, plugin phức tạp khéo cũng mất nửa tháng đến 1 tháng tìm hiểu đấy
Ý 1 thì đồng ý, bài viết này là dành cho các bạn muốn tìm hiểu CÀNG NHIỀU CÀNG TỐT về một mã nguồn có trước, đó chính là mục đích, còn nếu đi làm thì tùy khách hàng giao gì ta tìm hiểu những cái có liên quan.
Không phải code nào nói muốn đục là đục đâu tùy code họ có hướng mở cho mà đục hay không. Viết theo kiểu hầm bà lằn của coder lơ mơ mò có mà chết đọc vài dòng tức đến chết hết muốn đọc tiếp .