it-swarm-vi.com

Có ai thích phông chữ tỷ lệ?

Tôi đã đọc bài viết trên wikipedia về phong cách lập trình và nhận thấy điều gì đó trong một đối số chống lại mã được sắp xếp theo chiều dọc:

Sự phụ thuộc vào phông chữ đơn cách; định dạng bảng giả định rằng trình soạn thảo sử dụng phông chữ có chiều rộng cố định. Hầu hết các trình soạn thảo mã hiện đại đều hỗ trợ phông chữ tỷ lệ và lập trình viên có thể thích sử dụng phông chữ tỷ lệ để dễ đọc .

Thành thật mà nói, tôi không nghĩ rằng tôi đã từng gặp một lập trình viên thích một phông chữ tỷ lệ. Tôi cũng không thể nghĩ ra bất kỳ lý do thực sự tốt để sử dụng chúng. Tại sao ai đó thích một phông chữ tỷ lệ?

53
Jason Baker

Điểm chung so với phông chữ tỷ lệ, đã nhận xét.

  • Bạn không thể căn chỉnh chính xác mã theo chiều dọc với phông chữ tỷ lệ. Ý tôi là, bạn could căn chỉnh chính xác mã theo chiều dọc với phông chữ tỷ lệ, nếu mọi người đang sử dụng tabstops đàn hồi , nhưng than ôi ...
  • Một số phông chữ tỷ lệ làm cho khó phân biệt một số nhóm ký tự. (ví dụ: mrnm). Tuy nhiên, không phải tất cả các phông chữ lập trình đều hoàn hảo: Courier New có 'O' và '0' giống hệt nhau '1' và 'l'.
  • Một số IDE có hỗ trợ kém cho phông chữ có chiều rộng không cố định (như đã nói ở trên Visual Studio hoặc IDLE của Python). Trong một số bối cảnh, bạn cũng không thể sử dụng nó. (ví dụ: thiết bị đầu cuối.)
  • Chọn một phông chữ tỷ lệ để mã hóa sẽ giúp bạn trong các cuộc chiến thần thánh bất tận. Tuy nhiên, ở đây, vấn đề tồn tại giữa bàn phím và ghế.

Điểm có lợi cho phông chữ tỷ lệ

Cá nhân tôi đã sử dụng cả phông chữ 'Ubunt và WenQuanYi Zen Hei Mono với niềm vui và thấy mình không thể thích cái này hơn cái kia. :)

Ubuntu
WenQuanYi Zen Hei Mono
[.__.] Ubuntu 10 và WenQuanYi Zen Hei Mono 9, được so sánh. Không có người chiến thắng rõ ràng ở đây, nếu bạn hỏi tôi.

Điều đó nói rằng, phông chữ giống như thực phẩm. Một số người thích chúng tròn trịa, một số thích chúng nóng và cay - không có ai đúng phông chữ, hoặc tất cả chúng ta sẽ sử dụng nó ngay bây giờ. Yay cho sự lựa chọn!

47
badp

Có một lý do khiến cho thực tế không thể sử dụng các phông chữ ngoài mã đơn cách để mã hóa, nhưng không được đề cập trong các câu trả lời khác: lựa chọn hình chữ nhật.

Tính năng này, thường không hữu ích và không được biết đến nhiều khi làm việc với văn bản thông thường, rất cần thiết cho các nhà phát triển. Bạn có thể tưởng tượng vô số tình huống: xóa // nhận xét về một số dòng, thêm dấu ngoặc đơn hoặc các ký tự khác, v.v. Điều này thậm chí còn có giá trị hơn với sự hỗ trợ nâng cao của các lựa chọn hình chữ nhật, như trong Visual Studio 2010, nơi bạn không chỉ có thể chọn và xóa văn bản mà còn chọn và thay thế nó.

Hãy lấy một ví dụ:

private IEnumerable<SELove> StackExchangeRocks()
{
    var howILoveSEWebsites = new []
    {
        new SELove { SiteName = "Stack Overflow", MyReputation = 5269,  MyRating = Rating.Outstanding, },
        new SELove { SiteName = "Programmers",    MyReputation = 16937, MyRating = Rating.Outstanding, },
        new SELove { SiteName = "Super User",     MyReputation = 650,   MyRating = Rating.QuiteGood,   },
        new SELove { SiteName = "Server Fault",   MyReputation = 489,   MyRating = Rating.Good,        },
        // Initialize other websites here.
    };

    return howILoveSEWebsites.OrderByDescending(c => c.MyRating);
}

private class SELove
{
    public string SiteName { get; set; }
    public int MyReputation { get; set; }
    public Rating MyRating { get; set; }
}

private enum Rating
{
    Outstanding,
    Good,
    QuiteGood,
}

Trong mã kế thừa này, tôi muốn thay thế xếp hạng trong mã bằng một phương pháp sẽ tải xếp hạng của tôi từ các trang web Stack Exchange, để có thể luôn có dữ liệu cập nhật. Tôi bắt đầu cấu trúc lại thuộc tính MyReputation và bây giờ tôi muốn xóa phần khởi tạo, trong phạm vi. Hãy tưởng tượng rằng tôi không có bốn, nhưng tất cả 84 trang web SE.

Đây là những gì xảy ra khi sử dụng Consolas , một phông chữ đơn cách. Tôi nhấn Backspace, và đó là tất cả, tôi có thể dành thời gian còn lại để làm một cái gì đó thực sự hữu ích.

The image shows that with Consolas, the rectangle selects reputation property.

Và ở đây điều tương tự với Segoe UI . Ôi!

The image shows that with Segoe UI, some reputation properties are selected only partially, while on other lines, the beginning of rating property is selected.

30
Arseni Mourzenko

Tôi đã từng sử dụng một phông chữ tỷ lệ, chủ yếu là vì tôi thấy dấu câu thực sự dễ phân biệt hơn, nhưng theo thời gian tôi đã từ bỏ vì không ai khác làm điều đó và mọi người vô tình giả định các phông chữ cách đều (như bài viết trên wikipedia, cố gắng làm bảng định dạng, nghệ thuật ascii trong ý kiến ​​và như vậy).

Thêm vào đó, các sự cố trong Visual Studio , mà Microsoft không muốn khắc phục, về cơ bản khiến cho không thể sử dụng phông chữ tỷ lệ được thiết kế tốt.

15
Dean Harding

Cá nhân tôi không quan tâm. Miễn là bạn giữ các tab của mình được căn chỉnh và phông chữ dễ đọc, tôi không quan tâm đến việc liệu tôi có sử dụng khoảng cách đơn cách, tỷ lệ hoặc một số khoảng cách khác không. Chỉ cần không bắt đầu thay thế các tab của tôi bằng dấu cách và bạn sẽ không có cãi nhau với tôi.

9
Aeo

Tôi sử dụng một phông chữ tỷ lệ (Arial là phông chữ tốt nhất mà tôi đã tìm thấy cho đến nay, Verdana là một á quân thân thiết) và thành thật mà nói tôi vẫn còn băn khoăn rằng mọi người sử dụng phông chữ có chiều rộng cố định; Tại sao bạn lại muốn hy sinh khả năng đọc như vậy? Tôi có thể hiểu nếu định dạng bảng là mong muốn, nhưng không, vì nó tạo ra một cơn ác mộng bảo trì bất kể phông chữ.

6
rwallace

Đối với các ngôn ngữ có dòng ngắn và nhiều không gian mở, tôi thích phông chữ đơn cách. Tôi thấy rằng các phông chữ có chiều rộng thay đổi có thể cải thiện khả năng đọc nơi bạn có các dòng dài và cú pháp dày đặc.

Vấn đề với hầu hết các phông chữ tỷ lệ là chúng không được thiết kế để lập trình. Trang này hiển thị một số phông chữ.

Trim font

4
user287424

Tôi nhớ trong cuốn sách của Bjarne Stroustrup Ngôn ngữ lập trình C++ , phông chữ cách nhau propotianitely được sử dụng cho mã. (Tôi không thể tìm thấy bất kỳ trang mẫu nào trên web)

Tôi không nhớ lý do chính xác, nhưng nghĩ rằng anh ấy đã đề cập đến điều này và một thay đổi khác (tôi nghĩ chính ngôn ngữ C++) là một giới thiệu mới trong đó sách.

Cá nhân, tôi thích những không gian cố định. Consolas là yêu thích của tôi.

4
Nivas

Các môi trường Smalltalk như Pharo sử dụng phông chữ tỷ lệ và do phong cách ngôn ngữ, nó trông rất tốt ở đó. Nhưng trong các ngôn ngữ kiểu C như Go hoặc các ngôn ngữ khác như Erlang hoặc Python Tôi thích phông chữ đơn cách.

2
themue

Tôi đã dành một chút thời gian để tìm một phông chữ tốt, dễ đọc cho Eclipse một thời gian trước và dưới XP Tôi đã sử dụng Verdana trong một thời gian khá lâu. Consolas giải quyết rằng vì nó thực sự tuyệt vời cho lập trình.

Đây là những phát hiện của tôi:

  • Hầu hết các phông chữ tỷ lệ được thiết kế cho văn xuôi và chỉ có một dấu chấm câu nhỏ (mà lần lượt thường là một hoặc hiếm khi hai ký tự). Họ ngôn ngữ C có rất nhiề về dấu câu, điều này đơn giản là không - theo ý kiến ​​của tôi - trông hay và khó đọc hơn mức cần thiết.
  • Các ký tự có độ dài thay đổi có nghĩa là độ dài của các dòng khác nhau. Điều này khiến nó gần như không thể đoán được nơi con trỏ sẽ kết thúc khi điều hướng bằng các nút mũi tên. Tôi thấy điều này gây phiền nhiễu.
  • Khoảng cách dọc vấn đề quá. Đây thường không phải là thứ có thể bị ghi đè dễ dàng và hầu hết các phông chữ tỷ lệ có ít chỗ giữa các dòng hơn tôi muốn.
  • Rất ít IDE được thử nghiệm với phông chữ tỷ lệ. Điều này tạo chỗ cho các lỗi tinh vi như đặt con trỏ vào vị trí sai, ký tự sơn lại không chính xác và tương tự.

Do đó tôi thấy rằng nó không đáng để tôi gặp rắc rối.


Lưu ý về căn chỉnh và các bố cục khác: Tôi đã đặt Eclipse để tự động định dạng từng tệp cho mỗi lần lưu, vì vậy tất cả các bố cục ưa thích sẽ tự động được đặt lại. Eclipse sử dụng các tab thay vì nhiều khoảng trắng và chúng có thể được định vị chính xác ngay cả với các phông chữ tỷ lệ. Do đó bố trí bộ định dạng có thể hơn nhau, nhưng chúng tôi sử dụng cấu hình bộ định dạng tiêu chuẩn không có điều đó.

Tôi tin rằng việc thực thi định dạng tự động cho mọi người trên mỗi lần lưu sẽ giảm thiểu các lỗi tích cực trong hệ thống kiểm soát nguồn, khi thực hiện phân tích pháp y.

2
user1249

Không bao giờ, bởi vì phông chữ Monospaces cho phép tôi so sánh các thuộc tính khác nhau.

So sánh :

name1 = ["William", "Shakespear", 1564, "Peotry"]

name2 = ["John", "Locke", 1632, "Triết học"]

name3 = ["Jonathan", "Littell", 1967, "văn xuôi"]

Tới :

name1=["William",  "Shakespear", 1564, "Peotry"     ]
name2=["John",     "Locke",      1632, "Philosophy" ]
name3=["Jonathan", "Littell",    1967, "Prose"      ]

Các phông chữ tỷ lệ không thể đặt các thuộc tính tương đương chính xác lên nhau.

0
Adam Matan

Mặc dù tôi cảm thấy rằng phông chữ tỷ lệ đẹp hơn, nhưng trong một số trong số chúng, đặc biệt là phông chữ sans-serif, không thể thấy sự khác biệt giữa chữ "I" và "l". Đợi đã, tôi đã đặt tên biến đó là gì?

0
Billjk