Coder không kiên nhẫn.

Trước giờ logic code của mình vẫn luôn dễ dãi như gái làng chơi nên đôi khi nó đã support thêm cho mình cái đức tính càng lúc càng không (thèm) kiên nhẫn.

Câu chuyện bắt đầu

Hôm đó thầy yêu cầu mình dùng C# để xử lí một cái file xml tựa tựa như sau:

<?xml version="1.0" encoding="UTF-8" ?>
<people>
<person sex="Male">
    <name>Rice from Vietnam</name>
    <email>rice@rice.com</email>
</person>
<person sex="Female">
    <name>Girl from Vietnam</name>
    <email>girl@girl.com</email>
</person>
</people>

Ui dào, không có gì khó cả. :smiley:. Cái này thầy dạy rồi. Dùng XDocument, DescentdantsElement nè. Tự nhủ điểm cao ngon ơ.

class Program
    {

        static string name { get; set; }
        static string sex { get; set; }
        static string email { get; set; }

        static void Main(string[] args)
        {
            XDocument document = XDocument.Load("xxx/people.xml");
            var humanity = document.Descendants("person").ToList();
            foreach (var person in humanity)
            {
                name = person.Element("name")?.Value;
                email = person.Element("email")?.Value;
                Console.WriteLine($"{name} - {email}");
            }
            Console.ReadLine();
        }
    }

Ơ mà thiếu nè...

Ờ ha! Sao lấy được value của sex ta? Phải nhấn mạnh trước là thầy đã dạy mình dùng XDocument, DescentdantsElement. Mình nghĩ vậy là đủ nên cứ thế mà phang thôi.

Nhưng phang mãi vẫn không ra nên mình cáu.

Nếu là một anh Coder khác, có lẽ anh ấy sẽ bình tĩnh ngồi chấm để tìm function hay arg cần sử dụng, nhưng rất tiếc mình lại là thằng thiếu kiên nhẫn. Thế là mình quyết định chơi trò nguyên thủy là cắt ghép chuỗi.

static string GetSex(string instance)
        {
            string[] result = instance.Replace("<person sex=", "").Split('>');
            return result[0].Replace('"','-').Replace("-",string.Empty);
        }

Rồi kéo full program là:

foreach (var person in humanity)
            {
                sex = GetSex(person.ToString());
                name = person.Element("name")?.Value;
                email = person.Element("email")?.Value;
                Console.WriteLine($"{name} - {sex} - {email}");
            }

Thế là chạy chương trình thấy ngon ơ:

alt text

Chuyện chưa có hết ...

Chuyện là nộp bài xong, về nhà ăn nốt đĩa mì, mình rảnh rang ngồi gõ lại bài hồi chiều. Lúc gõ tới chữ person mình vô tình .At một cái, và cậu chàng hiện ra ...

alt text

Holly shit :scream:, return the XAttribute of this XElement, mình bắt đầu nghĩ đến tình huống liệu mình có bị ngáo chó không khi ngồi viết cái hàm cắt chuỗi kia ...

foreach (var person in humanity)
            {
                sex = person.Attribute("sex")?.Value;
                name = person.Element("name")?.Value;
                email = person.Element("email")?.Value;
                Console.WriteLine($"{name} - {sex} - {email}");
            }

Và mình ngáo chó thật ...

alt text

Kết

Trước mình có đọc rất nhiều bài như https://medium.freecodecamp.org/how-to-think-like-a-programmer-lessons-in-problem-solving-d1d8bf1de7d2 hay là https://medium.freecodecamp.org/the-main-pillars-of-learning-programming-and-why-beginners-should-master-them-e04245c17c56. Mình đã nghĩ mình thấm nhuần rồi, mình đã có suy nghĩ của lập trình viên rồi. Nhưng không, như một trò đùa thôi =)).

Qua bài này mình chỉ muốn nhấn mạnh thêm một thứ đã quá quá cũ là làm gì cũng nên kiên nhẫn một tí.

Trước bất cứ một cái problem nào thì cũng nên tuân thủ các bước

Đọc đề -> Hiểu đề ->Giải đề (Xé đề) -> Đi về.

Bước hiểu là một bước vô cùng quan trọng. Không hiểu mà cứ lao lao vào code là ngu. Ví dụ như trong vấn đề kia, nếu mình chịu khó ngồi ngẫm thì có lẽ đã biết nó là Attribute, hoặc đơn giản ngồi chấm thôi cũng có khi tìm ra Châu Mỹ rồi.

Vậy nên anh em làm gì cũng thế, bình tĩnh là trên hết.

Safety first and have fun. :laughing:

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Rice

10 bài viết.
25 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
15 8
Sản phẩm sau khi làm http://coffeetube.herokuapp.com/ Yêu cầu Nói chung thì giờ download nhạc từ youtube thì nó có vô số cách rồi. Nhưng tự mình...
Rice viết 1 năm trước
15 8
White
7 3
Description Mình là một thằng thích đọc sách. Nhưng lúc nào cũng bận (lười) nên cũng mấy tháng rồi chưa hoàn thành được quyển sách nào. Mình đa số...
Rice viết 9 tháng trước
7 3
White
4 0
Mục tiêu Mình muốn làm một chương trình: Đọc rss (definition and usage of rss :arrow_right: https://en.wikipedia.org/wiki/RSS) Lựa chọn những ...
Rice viết 11 tháng trước
4 0
Bài viết liên quan
White
16 0
Bài toán đặt ra Parse một file XML kích thước 10GB chứa thông tin kết quả tất cả các trận bóng đá trong lịch sử và ghi vào database. xml 1 ...
Cẩm Huỳnh viết gần 2 năm trước
16 0
White
1 0
1. Định nghĩa XML là ngôn ngữ đánh dấu có thể mở rộng XML được thiết kế để lưu trữ và truyền dữ liệu XML được thiết kế để cả máy và người đều hi...
egd-ngocnd viết 7 tháng trước
1 0
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
10 bài viết.
25 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!