Ví dụ về Refactoring

Chúng ta bắt đầu với ví dụ:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package vn.com.ndd.payroll;
public class PayCalculator {
public static float calculate(double hours, double rate,
boolean isHourlyWorker) {
if (hours < 0 || hours > 80) {
throw new RuntimeException("Hours out of range: " + hours);
}
float wages = 0;
if (hours > 40) {
double overTimeHours = hours - 40;
if (isHourlyWorker) {
wages += (overTimeHours * 1.5) * rate;
} else {
wages += overTimeHours * rate;
}
hours -= overTimeHours;
}
wages += hours * rate;
return wages;
}
}

Read More

Share Comments

The Clean Architecture

Kiến trúc Clean

Liên quan tới kiến trúc hệ thống từ trước tới nay có rất nhiều người nghiên cứu và đưa ra rất nhiều kiến trúc khác nhau. Mỗi kiến trúc đều có những nét đặc trưng riêng và có thể áp dụng cho những bài toán cụ thể rất hiệu quả, nhưng khi nhìn về mục đích thì chúng đều có một điểm rất giống nhau đó là những yếu tố khi phân tách hệ thống. Tất cả những kiến trúc đều cố gắng phân chia phần mềm thành các lớp khác nhau. Thông thường ở bất kỳ cấu trúc nào cũng có một lớp cho GUI và một lớp cho business logic. Tổng hợp chung chúng ta có thể thấy các mối quan tâm giải quyết chủ đạo của các kiến trúc đều dưa tới các mục đích sau:

Read More

Share Comments

Bí mật của Overtime

Cho dù bạn làm ở lĩnh vực nào, công việc của bạn là gì thì có lẽ Overtime (OT) không phải là một khái niệm quá xa lạ. Xét trên khía cạnh khái niệm chúng ta có thể hiểu OT là lượng thời gian mà các nhân viên làm việc vượt quá số giờ làm việc tiêu chuẩn hay thông thường. Thời gian làm việc tiêu chuẩn đâu đó xung quanh con số 40h/week ở hầu hết các quốc gia trên thế giới, còn thời gian làm việc thông thường sẽ được tính dựa trên hợp đồng, luật hoặc các văn hóa truyền thống ở địa phương. Ở nhiều nơi, khi nhân viên OT họ sẽ được trả thêm tiền đôi khi với tỉ lệ cao hơn giờ làm việc tiêu chuẩn. Về phía công ty, việc nhân viên làm thêm giờ có thể giúp giải quyết được các vấn đề cấp bách, áp lực tiến độ dự án, hoàn thành các sản phẩm sớm hơn …Thế nhưng liệu OT có thực sự mang lại nhiều lợi ích như vậy cho chúng ta hay không?

Overtime

Read More

Share Comments

Những điểm mới trong ES6 (Phần 2)

Class

Một trong những tính năng được mong chờ nhất trong javascript chính là class. Mặc dù trên ES5 chúng ta có thể tạo được class, tuy nhiên đó là một cách không dễ dàng đối với những người mới bắt đầu code javascript. Với ES6 mọi thứ trở nên rất dễ dàng:

1
2
3
4
5
6
7
8
9
10
11
class Pony {
  constructor(color) {
  this.color = color;
  }
  toString() {
  return `${this.color} pony`;
  // 'template literals' là một tính năng rất hay khác nữa trong ES6
  }
}
const bluePony = new Pony('blue');
console.log(bluePony.toString()); // blue pony

Read More

Share Comments

Những điểm mới trong ES6 (Phần 1)

Transpilers

Nếu bạn là tín đồ của javascript chắc hẳn bạn phải biết tới đặc tả tiêu chuẩn của javascript là ECMAScript. Hiện nay các phiên bản javascript chúng ta sử dụng hầu hết được viết dựa trên ECMAScript version 5. Version 6 của ECMAScript đã ra đời với rất nhiều tính năng đáng chú ý, tuy nhiên chưa có nhiều trình duyệt hỗ trợ hoàn toàn phiên bản mới này. (Edge của Microsoft là một trong số ít các trình duyệt đi đầu hỗ trợ ES6). Để giải quyết vấn đề này cộng đồng đã cho ra đời một phương pháp giải quyết đó là transpiler.

Read More

Share Comments

Hướng dẫn viết blog

Cài đặt môi trường

Blog sử dụng hexo dựa trên nodejs nên cần cài đặt nodejs

  1. cài đặt nodejs

  2. cài đặt hexo

1
npm install hexo-cli -g

Read More

Share Comments

Hospitality

1. Hospitality là gì?

Hospitality là một từ xuất hiện ở Anh từ khoảng năm 1325 – 1375. Theo từ điển thì nó có nghĩa là việc đối xử một cách thân thiện, tử tế của một người chủ với một người khách hoặc một người lạ nào đó. Ví dụ như câu give a person a hospitality. Nó là một danh từ đếm được, nghĩa là có thể có nhiều hospitalities, tức là có nhiều hành động tử tế. Khi nó du nhập vào Nhật thì người Nhật chấp nhận từ đó với ý nghĩa là nghĩ cho người khác, làm những điều vì người khác, hay đối xử với người khác từ trái tim mình đúng như văn hóa của người Nhật. Và đặc biệt từ này đã trở thành một từ như chỉ về các dịch vụ đặc biệt làm hài lòng khách hàng trong kinh doanh. Khi nói về việc làm một hospitality cho một người nào khác thì người Nhật hiểu rằng hành động đó không chỉ là vì đối phương mà nó còn hàm chứa cả tấm lòng của người thực hiện hành động.

Read More

Share Comments

10 nguyên lý kinh tế cơ bản

Lời nói đầu

Kinh tế tiếng Anh là economy có nguồn gốc từ tiếng hy lạp là oikonomous có nghĩa là người quản lý thu chi gia đình. Mới nhìn qua hai khái niệm này không mấy liên quan tới nhau, nhưng càng suy nghĩ kỹ sẽ càng thấy kinh tế và gia đình có rất nhiều điểm chung. Việc quản lý sắp xếp trong gia đình chính là việc phải dựa trên các nguồn lực hạn chế (thu nhập) để phân bổ các nhu cầu (chi tiêu) trong gia đình sao cho hợp lý. Đồng thời cần phải sắp xếp phân công lao động ví dụ như ai sẽ là người nấu cơm, ai rửa bát, ai ở nhà trông con, ai là người đi làm kiếm thu nhập …Nếu mọi việc không được sắp xếp hợp lý sẽ có người bận rộn, người nhàn rỗi, tháng thì chi tiêu quá nhiều, tháng thu nhập thấp dẫn tới thiếu cân bằng, lãng phí và khiến cuộc sống khó khăn hơn.

Read More

Share Comments

Các định luật phần mềm – Phần 3

Định luật Kerckhoffs

Trong lĩnh vực mã hóa có một định luật được phát biểu bởi Auguste Kerkhoffs nói rằng:

In cryptography, a system should be secure even if everything about the system, except for a small piece of information — the key — is public knowledge.
Một hệ thống phải được an toàn ngay cả khi kẻ thù biết được tất cả mọi thứ về hệ thống trừ một thứ đó là key mã hóa.

Định luật này xuất phát từ thế kỷ 19 và nó dường là tiền đề cho mọi phát minh về mã hóa sau này. Trong thế chiến thứ 2 khi mà hoạt động tình báo trở nên vô cùng phổ biến và cuộc chiến về mã hóa đã cho ra đời hàng trăm phát minh mới về mã hóa trong thời gian này thì định luật này được xem như là cơ sở. Và hiện nay với các mã hóa hiện đại càng thể hiện sự đúng đắn của định luật này.

Read More

Share Comments

Các định luật phần mềm – Phần 2

Định luật murphy

Một định luật vô cùng nổi tiếng khác mà có lẽ tất cả mọi người đều biết, nhưng không phải ai cũng hiểu rõ về nó đó chính là định luật murphy. Được phát biểu như sau:

If anything can go wrong, it will.
Nếu một việc có thể diễn tiến xấu, nó sẽ diễn tiến đúng như thế

Read More

Share Comments