Hãy ngừng viết code

Lập trình có lẽ là 1 công việc khá thú vị đối với nhiều anh em. Nhớ lại năm xưa khi lần đầu tiên bỡ ngỡ trong cái giảng đường đại học rộng mênh mông với ý nghĩa về lập trình là con số không thì ấn tượng với mình về câu nói của người thầy giáo già về thú vui lập trình làm mình nhớ mãi đến tận bây giờ mà không thể quên. Hôm đó là vào ngày nắng nóng giữa tiết trời mùa hạ ở đại học Massachusetts Xuân Thủy (tên gọi vui của Đại học Công nghệ) trong bộ môn TÍNH TOÁN SIÊU CƯỜNG CẤP ĐỘ ĐẦU, thầy giáo mình đã nói “Cái thú vui của người làm toán nó cũng như thủ dâm ấy. Khi giải được 1 bài toán nó sướng lắm” Mình chỉ nhớ mang máng đại ý của câu nói là thế chứ câu từ đầy đủ thì cũng không còn tồn tại trong trí óc của mình nữa rồi :3 Tất cả để thay điều mình muốn nói về sự thú vụ và hấp dẫn khi đã dấn thân vào công việc của một lập trình viên.

i-amp-039-m-so-excited_o_2547937

Hấp dẫn là thế, hay ho là thế tuy nhiên cũng không thể tránh khỏi được những lúc buồn chán, cảm giác đối với những công việc đã làm thật nhàm chán, không có gì để làm nữa. Thay vì sáng tạo thì chúng ta lại phải dấn thân mình vào những đêm trường trung cổ, suốt ngày copy, paste lặp đi lặp lại và điều này làm chúng ta không còn chút hứng thú nào nữa với công việc.

ktt_30-5_tratan5_kienthuc

Tại thời điểm này anh em hãy thể hiện mình là 1 lập trình viên chuyên nghiệp nào. Có tồn tại 1 quan điểm rất hay ho trong quyển sách The Pragmatic Programmer đó là hãy viết code để viết code (write code that writes code). Đó chính là thứ mình muốn truyền tải đến anh em trong bài viết này. Thay vì tối ngày đóng cửa giam mình trong thế giới riêng để tạo ra những dòng code lặp đi lặp lại bằng cách ctrl + c rồi ctrl + v rồi edit thì hãy dừng ngay công việc đó lại. Hãy ngừng viết code mà hãy tạo ra chúng :v
Giờ thì hãy bắt tay vào từng ví dụ để có thể trải nghiệm điều đó nào :v

Một dạng đơn giản để sinh ra code đó là sử dụng snippet. Đây là 1 công cụ được hỗ trợ từ rất lâu trong VisualStudio mà có lẽ nhiều anh em cũng đã biết rồi. Ví dụ dễ dàng thấy nhất của nó là khi chúng ta ngồi gõ mấy cái lệnh cơ bản như for, try catch và gõ TAB là đoạn code cho những lệnh kia sẽ tự động được sinh ra. Hay ho đấy chứ.

Cú pháp khi sử dụng snippet đơn giản là từ khóa rồi TAB 1 phát. Mình xin giới thiệu 1 số snippet đơn giản mà hay được sử dụng cho anh em

  • ctor: tạo contrucor cho class
  • prop – Tạo properties – Gõ xong nhớ Tab Tab (có cả propfull nữa nhé)
  • cw – Console.WriteLine() – Cho mấy bạn hay code Console
  • 1
  • if/else, do/while, switch, try

Nếu lượng snippet cung cấp cho anh em chưa đủ thì chúng ta có thể tự tạo những snippet theo ý thích của mình chỉ trong vài phút thôi. Tất cả những gì cần làm đó là tạo 1 file XML rồi điền những element sau đó bổ sung thêm code sinh ra thế là xong.
Anh em có thể xem danh sách snippet bằng cách truy cập Tool/Code Snippets Manager hay bằng Hotkey Ctrl + K, Ctrl + B

2

3

Hay truy cập thẳng theo đường dẫn %USERPROFILE%\Documents\Visual Studio 2010\Code Snippets\ rồi mở tạm 1 2 cái ra là xem rồi chỉnh sửa lại theo ý thích là được. Mình cũng không nói chi tiết cách tạo nữa vì nó đơn giản quá :v Anh em xem qua 1 cái snippet mà mình tạo ra để sử dụng cho việc viết code bằng Selenium :v.

Sau khi đọc qua thì chắc anh em cũng hiểu được đôi chút là khi chúng ta gõ “anchor” rồi Tab ra 1 phát thì Visual sẽ tạo ra đoạn code và truyền vào 3 tham số mà quy định nữa thôi :3

Qua snippets thì anh em cũng đã có thể sử dụng để hạn chế việc copy paste được khơ khớ rồi đấy :3

Tuy vậy có thể nhiều anh em cũng tự đặt tay lên trán và ngẫm rằng “Đấy là mấy cái nhỏ nhỏ thì dùng thế thôi chứ bây giờ muốn sinh code cho cả nghìn file, tên tủng thay đổi thì làm thế này chắc chớt quá” Hmn đó cũng câu hỏi mà mình đắn đo thế là mình lại tiếp tục suy nghĩ và trăn trở hơn rồi cuối cùng đã tìm thấy ánh sáng nơi cuối con đường.

Cứ đi tìm đâu xa xôi thì ra lại là 1 tính năng có sẵn của bộ VisualStudi: T4 Text Template. Đây là 1 tính năng khá là mạnh mẽ cho việc generate code bằng cách sử dụng file có đuôi là .tt (Text Template), file này trộn lẫn giữa text và codeblock để sinh ra các file code mẫu.
Nói về cách sử dụng thì có thể xem như là không khác việc đi ra ngoài ăn bát phở là mấy, anh em chỉ cần múa may vài đường cơ bản là có thể làm được ngay. Không tin thì hãy làm theo mình nào :3 Đầu tiên chỉ cần tạo ra 1 file T4 Tempalte

4

Cấu trúc file tt không khác gì file cs mà chúng ta hay sử dụng. Anh em nhìn xuống hình ảnh minh họa phía dưới

5

Và giờ cứ mỗi lần ấn Ctrl + S thì VisualStudio sẽ tự động sản ra 1 file có định dạng được anh em quy định ở phần output. Đoạn nào là code thì anh em để trong <#.. #> còn đoạn nào không nằm trong đó sẽ là text được tạo ra :3
Đoạn code trên sẽ tạo ra file Bar.cs

6

Ahihi dễ hiểu quá phải không 500 anh em.Minh họa cho mọi người thêm 1 ví dụ nữa này

7

PS: Anh em lưu ý có thể bị dính lỗi kiểu A template containing a class feature must end with a class feature là do chúng ta để dư thừa một vài dấu cách ở cuối cái thẻ #> đấy :3

Để nói về chi tiết của thằng TT thì có lẽ 1 bài viết là không đủ và mục đích chính của mình trong bài viết này là giới thiệu cho anh em các công cụ hỗ trợ cho việc generate code chứ không đi sâu vào việc hướng dẫn chi tiết cách sử dụng vì thế anh em có thể tìm kiếm thêm các bài viết trên mạng thông qua Google để có thể hiểu kĩ càng hơn.

Còn giờ mình chia sẻ 1 đoạn code với T4 mà có lẽ nhiều anh em hay sử dụng để tạo ra các POCO từ các table trong CSDL.

Ngoài T4 thì thực ra còn rất rất nhiều các công cụ khác cũng hỗ trợ cho việc generate trong cộng đồng .NET mà tiêu biểu có thể sướng lên 1 cái tên đó như CodeSmith. Đối với anh em là Java cũng có thể sử dụng 1 số công cụ khác tương tự như JavaPoet, Valencity, …Mình xin mạo muội dẫn link lại cho anh em đồng dâm mục sở thị chứ không đi sâu vào trong quần chúng như 2 thằng kia. Anh em tự ngồi luận kiếm nhé

https://github.com/swagger-api/swagger-codegen

https://github.com/square/javapoet

Advertisements

One thought on “Hãy ngừng viết code

  1. Pingback: Những thứ hay ho làm cuộc sống của bạn rảnh hơn | Code, code and more code

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s