Những điều cần thiết có thể bạn chưa biết khi thực hiện làm nhóm

Thảo luận trong 'Rao Vặt Miền Bắc' bắt đầu bởi nguyenhang1112, 4/5/16.

  1. nguyenhang1112

    nguyenhang1112 Thành Viên Mới

    Tham gia ngày:
    28/3/16
    Bài viết:
    24
    Đã được thích:
    0
    Điểm thành tích:
    1
    Giới tính:
    Nữ
    khóa học php hà nội
    Trong loạt bài hướng đối tượng trước, chúng ta đã có dịp đi qua những kiến thức cơ bản và nắm bắt những phương thức magic và sự kế thừa trong hướng đối tượng . Ở bài này chúng tôi tiếp tục đưa tới cho bạn đọc những góc cạnh riêng biệt buộc lập trình viên phải tuân thủ khi làm việc theo mô hình đội nhóm .
    Ghi chú mã lệnh với DocBlocks

    Tuy là một phần không chính thức của Lập Trình Hướng Đối Tượng, nhưng các kiểu mẫu DocBlock comment được chấp nhận rộng rãi như một phương pháp chú thích trong các class . Ngoài việc cung cấp một chuẩn comment cho các lập trình viên sử dụng khi lập trình, nó còn được sự chấp thuận và hỗ trợ bởi nhiều nhà phát triển công cụ hỗ trợ lập trình phổ biến như Eclipse và NetBeans, và sẽ được sử dụng để tạo ra các đoạn code hint (gợi ý mã lệnh) .

    Chúng ta sử dụng block comment để định nghĩa một DocBlock:

    Mặc dù đoạn mã trên không phải là tệ, nhưng chúng ta vẫn phải chú ý đến nhiều vấn đề . Các giá trị của mảng trên sẽ được xử lý và trả về từ mỗi hàm riêng lẻ, do vậy dễ phát sinh lỗi .

    Để giải quyết vấn đề này, chúng ta phải tối ưu việc sử dụng càng ít mã lệnh cho lập trình viên càng tốt . Chỉ những thông tin thật sự cần thiết cho các thao tác hiện hành mới nên đưa vào xử lý trong các hàm .

    Đây chính là lúc Lập Trình Hướng Đối Tượng giúp đỡ bạn giải quyết vấn đề .

    Áp Dụng Lập Trình Hướng Đối Tượng

    Dưới đây áp dụng lập trình hướng đối tượng cho ví dụ của chúng ta:


    <?php

    class Person
    {
    private $_name;
    private $_job;
    private $_age;

    public function __construct($name, $job, $age)
    {
    $this->_name = $name;
    $this->_job = $job;
    $this->_age = $age;
    }

    public function changeJob($newjob)
    {
    $this->_job = $newjob;
    }

    public function happyBirthday()
    {
    ++$this->_age;
    }
    }

    // Tạo 2 người
    $person1 = new Person("Tom", "Button-Pusher", 34);
    $person2 = new Person("John", "Lever Puller", 41);

    // Xuất ra thông tin đầu tiên của 2 người
    echo "<pre>Person 1: ", print_r($person1, TRUE), "</pre>";
    echo "<pre>Person 2: ", print_r($person2, TRUE), "</pre>";

    // Cho Tom 1 công việc mới và tăng thêm 1 tuổi
    $person1->changeJob("Box-Mover");
    $person1->happyBirthday();

    // John chỉ được tăng thêm 1 tuổi
    $person2->happyBirthday();

    // Xuất ra giá trị cuối cùng (sau khi đã xử lý) của 2 người
    echo "<pre>Person 1: ", print_r($person1, TRUE), "</pre>";
    echo "<pre>Person 2: ", print_r($person2, TRUE), "</pre>";

    ?>

    <?php

    class Person
    {
    private $_name;
    private $_job;
    private $_age;

    public function __construct($name, $job, $age)
    {
    $this->_name = $name;
    $this->_job = $job;
    $this->_age = $age;
    }

    public function changeJob($newjob)
    {
    $this->_job = $newjob;
    }

    public function happyBirthday()
    {
    ++$this->_age;
    }
    }

    // Tạo 2 người
    $person1 = new Person("Tom", "Button-Pusher", 34);
    $person2 = new Person("John", "Lever Puller", 41);

    // Xuất ra thông tin đầu tiên của 2 người
    echo "<pre>Person 1: ", print_r($person1, TRUE), "</pre>";
    echo "<pre>Person 2: ", print_r($person2, TRUE), "</pre>";

    // Cho Tom 1 công việc mới và tăng thêm 1 tuổi
    $person1->changeJob("Box-Mover");
    $person1->happyBirthday();

    // John chỉ được tăng thêm 1 tuổi
    $person2->happyBirthday();

    // Xuất ra giá trị cuối cùng (sau khi đã xử lý) của 2 người
    echo "<pre>Person 1: ", print_r($person1, TRUE), "</pre>";
    echo "<pre>Person 2: ", print_r($person2, TRUE), "</pre>";

    ?>
    Kết quả xuất ra trên trình duyệt như sau:


    Person 1: Person Object
    (
    [_name:private] => Tom
    [_job:private] => Button-Pusher
    [_age:private] => 34
    )
    Person 2: Person Object
    (
    [_name:private] => John
    [_job:private] => Lever Puller
    [_age:private] => 41
    )
    Person 1: Person Object
    (
    [_name:private] => Tom
    [_job:private] => Box-Mover
    [_age:private] => 35
    )
    Person 2: Person Object
    (
    [_name:private] => John
    [_job:private] => Lever Puller
    [_age:private] => 42
    )

    Person 1: Person Object
    (
    [_name:private] => Tom
    [_job:private] => Button-Pusher
    [_age:private] => 34
    )
    Person 2: Person Object
    (
    [_name:private] => John
    [_job:private] => Lever Puller
    [_age:private] => 41
    )
    Person 1: Person Object
    (
    [_name:private] => Tom
    [_job:private] => Box-Mover
    [_age:private] => 35
    )
    Person 2: Person Object
    (
    [_name:private] => John
    [_job:private] => Lever Puller
    [_age:private] => 42
    )
    Mặc dù có 1 chút rườm rà ở khâu thiết lặp để tiếp cận Hướng Đối Tượng, nhưng sau khi class được định nghĩa, thì việc tạo và tùy chỉnh people trở nên nhanh gọn hơn rất nhiều;thông tin chi tiết của từng người không cần truyền đến hoặc trả về từ nhiều phương thức, mà chỉ những thông tin thực sự cần thiết được truyền đến cho từng phương thức .

    Trên quy mô nhỏ, sự khác biệt này có thể sẽ không nhiều, nhưng nếu như ứng dụng của bạn ngày càng phát triển lớn hơn, Lập Trình Hướng Đối Tượng sẽ giúp giảm đáng kể khối lượng công việc của bạn, nếu nó được thực thi đúng .

    Chú ý: Không phải mọi thứ đều cần Hướng Đối Tượng . Một hàm xử lý vài thứ nhỏ trong ứng dụng thì không cần thiết phải đưa vào trong một class . Vận dụng khả năng phân tích, nhìn nhận vấn đề của bạn để quyết định giữa Hướng Đối Tượng và Hướng Thủ Tục .

    Lý Do 2: Có tổ chức tốt hơn

    Một lợi ích khác của Hướng Đối Tượng là khả năng dễ dàng đóng gói và phân loại . Mỗi class nói chung có thể được giữ trong 1 tập tin riêng biệt của chính nó, và nếu một quy ước đặt tên thông nhất được sử dụng, việc truy cập vào các class sẽ vô cùng đơn giản .

    Giả sử bạn có một ứng dụng với 150 class, các class này sẽ được gọi 1 cách tự động thông qua 1 file controller đặt tại thư mục gốc của ứng dụng . Toàn bộ 150 class đều được đặt tên theo quy ướcclass . classname . inc . phpvà cư trú tại thư mụcinccủa ứng dụng .

    Controller có thể thực thi hàm__autoload()để tự động triệu gọi các class cần thiết, chứ không include toàn bộ 150 class vào trong file controller:


    <?php
    function __autoload($class_name)
    {
    include_once 'inc/class . ' . $class_name . ' . inc . php';
    }
    ?>

    <?php
    function __autoload($class_name)
    {
    include_once 'inc/class . ' . $class_name . ' . inc . php';
    }
    ?>
    Mỗi class đươc đặt tại 1 file riêng biệt đã làm mã lệnh trở nên di động hơn và dễ dàng để tái sử dụng hơn trong các ứng dụng mới .

    Lý Do 3: Dễ bảo trì

    Do cấu trúc mã lệnh tuy liên kết chặt chẽ nhưng vẫn tách biệt và rời rạc thành từng phần nênsự thay đổi mã lệnh trong lập trình Hướng Đối Tượng thường dễ dàng hơn là trong lập trình Hướng Thủ Tục .

    Nếu một mảng thông tin cụ thể nào đó nhận được một giá trị mới, một phần thủ tục của phần mềm có thể sẽ yêu cầu (trong trường hợp xấu nhất) thêm thuộc tính mới này vào trong từng hàm xử lý cái mảng này .

    Nếu ứng dụng của bạn là một ứng dụng Hướng Đối Tượng, điều này sẽ dễ dàng thực hiện hơn như: thêm thuộc tính mới, sau đó thêm các phương thức xử lý các thuộc tính đó .

    Tổng Kết

    Nếu đọc đến đây, có lẽ bạn đã bắt đầu cảm thấy thoải mái với tác phong Lập Trình Hướng Đối Tượng . Học Hướng Đối Tượng là một cách tuyệt vời để nâng cao trình độ lập trình của bạn . Khi thực thi đúng, Hướng Đối Tượng sẽ giúp bạn tạo ra những mã lệnh dễ đọc, dễ bảo trì và mang tính di động cao, giúp cho bạn tiết kiệm được rất nhiều thời gian làm việc .
     
    Cảm ơn đã xem bài:

    Những điều cần thiết có thể bạn chưa biết khi thực hiện làm nhóm

    Đang tải...


Like và Share ủng hộ ITSEOVN