2008-08-18 36 views
12

Tôi thực sự muốn thấy một IDE phông tỷ lệ, ngay cả khi tôi phải tự xây dựng nó (có lẽ là một phần mở rộng cho Visual Studio). Những gì tôi về cơ bản có nghĩa là MS Word phong cách chỉnh sửa mã mà loại trông giống như phong cách đánh máy trong The C++ Programming Language book.Phông chữ theo tỷ lệ IDE

Tôi muốn đặt các điểm dừng tab cho các thụt lề của tôi và xếp các chữ ký chức năng và các hàng của các câu lệnh gán, có thể được xác định bằng các điểm thay vì các vị trí ký tự cố định. Tôi cũng thích in đậm và in nghiêng. Kích thước phông chữ khác nhau và thậm chí cả các tờ kiểu sẽ rất tuyệt.

Có ai nhìn thấy bất cứ điều gì như thế này hay không biết cách tốt nhất để bắt đầu xây dựng tòa nhà?

+0

Tôi đang tạo mẫu thử nghiệm cho trình tạo mã python từ đầu. Mặc dù nó trông giống như một nhiệm vụ dễ dàng trong lý thuyết, nó có thể mất vài tháng/năm để biến nó thành một biên tập viên thực sự. Nhưng tôi chắc chắn tôi sẽ không cần in nghiêng hoặc bất cứ điều gì ngoài các ký tự ASCII. Đối với tôi quan trọng nhất là, nó phải độc lập với phông chữ hệ thống và vì vậy tôi có thể tạo/chỉnh sửa phông chữ mà không cần phần mềm đặc biệt. Điều này cũng cần định nghĩa mới về phông chữ, v.v. Tôi thậm chí không nói về nhiều thứ khác như làm nổi bật cú pháp ... –

Trả lời

16

tôi vẫn muốn xem một trình soạn thảo phổ biến hoặc IDE thực hiện elastic tabstops.

+1

Wow! Tôi chưa bao giờ thấy điều này trước đây và tôi đã muốn nó trên mọi IDE tôi sử dụng. –

1

Khi tôi xem Eclipse lần cuối (một thời gian trước đây!), Nó cho phép bạn chọn bất kỳ phông chữ nào được cài đặt để làm việc. Không chắc liệu nó có hỗ trợ khái niệm thụt lề bằng cách sử dụng các điểm dừng tab hay không.

Nó trông mát mẻ, nhưng mã là chắc chắn khó khăn hơn để đọc ...

4

tôi hy vọng bạn sẽ nhận được điều chỉnh xuống và chọn cho đề xuất đó, nhưng có một số ý nghĩa thực sự với ý tưởng.

Ưu điểm chính của yêu cầu phông chữ 'không tỷ lệ' truyền thống trong trình chỉnh sửa mã là giảm bớt gánh nặng thực hiện định dạng mã. Nhưng với tất cả các định dạng tự động tương tác xảy ra trong IDE hiện đại, nó thực sự có thể là một phông chữ tỷ lệ có thể cải thiện khả năng đọc của mã (thay vì cản trở nó, như tôi chắc chắn nhiều purists sẽ mong đợi).

Một ký tự được gọi là Roedy Green (nổi tiếng với bài viết 'how to write unmaintainable code' của mình) đã viết về trình soạn thảo/ngôn ngữ lý thuyết, dựa trên Java và được gọi là Bali. Nó không bao gồm các phông chữ không tỷ lệ chính xác, nhưng nó đã bao gồm ý tưởng có kích thước phông chữ không đồng nhất.

Ngoài ra, ngắn Joel Spolsky post bài đăng này thành giải pháp, tab đàn hồi dừng (như được đề cập bởi người nhận xét khác) sẽ giúp hỗ trợ phông chữ không tỷ lệ (và có kích thước biến).

1

Soeren: Đó là loại gọn gàng, IMO. Nhưng mọi người có thực sự đưa ra nhận xét như thế không? Đối với kết thúc các dòng chú thích của mình, tôi luôn sử dụng một khoảng trắng sau đó // hoặc/* hoặc tương đương, tùy thuộc vào ngôn ngữ tôi đang sử dụng. Tôi không bao giờ cố gắng xếp hàng tờ khai hay bình luận hay bất cứ điều gì, và nơi duy nhất tôi từng thấy trong sách giáo khoa.

2

@Thomas Owens

Nhưng để mọi người thực sự dòng bình luận lên như vậy? ... Tôi không bao giờ cố gắng để tuyên bố xếp hàng hoặc nhận xét hoặc mọi thứ và là nơi duy nhất tôi từng thấy thấy trong sách giáo khoa.

Có người xếp hàng các nhận xét và tuyên bố và tất cả mọi thứ. Mã được định dạng tốt nhất là dễ đọc và dễ đọc hơn, dễ bảo trì hơn.

1

@Brian Đảm bảo: Tôi không tìm thấy mã được định dạng như dễ đọc hơn.

int var1 = 1 //Comment 
int longerVar = 2 //Comment 
int anotherVar = 4 //Command 

so

int var2  = 1 //Comment 
int longerVar = 2 //Comment 
int anotherVar = 4 //Comment 

tôi thấy những dòng đầu tiên dễ đọc hơn so với dòng thứ hai, cá nhân.

3

@Thomas Owens

tôi không tìm thấy mã định dạng như vậy dễ đọc hơn.

Tốt thôi, nó chỉ là sở thích cá nhân và chúng tôi có thể không đồng ý. Định dạng nó theo cách bạn nghĩ là tốt nhất và tôi sẽ tôn trọng nó. Tôi thường tự hỏi mình 'làm thế nào tôi nên định dạng này hoặc điều đó?' Câu trả lời của tôi là luôn luôn định dạng nó để cải thiện khả năng đọc, mà tôi thừa nhận có thể chủ quan.

Về mẫu của bạn, tôi chỉ muốn có cột được căn chỉnh độc đáo ở phía bên tay phải, loại "chỉ mục" nhanh chóng của nó vào mã ở bên trái. Có nói rằng, tôi có lẽ sẽ tránh bình luận mọi dòng như thế bởi vì bản thân mã không cần giải thích nhiều. Và nếu tôi có xu hướng viết một đoạn trên mã.

Nhưng hãy xem ví dụ này từ áp phích gốc. Nó dễ dàng hơn để phát hiện các ý kiến ​​trong ý kiến ​​thứ hai trong quan điểm của tôi.

for (size-type i = 0; i<v.size(); i++) { // rehash: 
    size-type ii = has(v[i].key)%b.size9); // hash 
    v[i].next = b[ii]; // link 
    b[ii] = &v[i]; 
} 

for (size-type i = 0; i<v.size(); i++) {  // rehash: 
    size-type ii = has(v[i].key)%b.size9); // hash 
    v[i].next = b[ii];      // link 
    b[ii] = &v[i]; 
} 
+0

Ví dụ tuyệt vời - nhận xét '// link' bị mất trong ví dụ đầu tiên. Việc quét mã thông thường có thể bỏ qua nó hoàn toàn. – slim

+0

Đó không phải là một ví dụ tốt cho tôi, tiêu chuẩn của chúng tôi yêu cầu nhận xét có được dòng riêng của họ, và dù sao họ cũng là một màu khác. Tôi muốn có nhiều ký tự trên mỗi dòng. – dwidel

5

Thinking with Style đề xuất sử dụng phần mềm thao tác văn bản yêu thích của bạn như Word hoặc Writer. Tạo mã chương trình của bạn trong XML phong phú và trích xuất các phần liên quan đến trình biên dịch với XSLT. Phần mềm "Office" sẽ cung cấp tất cả các tính năng xử lý văn bản và định dạng nâng cao.

+0

Điều này rất gọn gàng.Tôi rất thích nhìn thấy một IDE đầy đủ được xây dựng trên một gói xử lý văn bản hoàn chỉnh với các tính năng thông minh mã tự động như các tính năng tìm kiếm/khai thác mã tiên tiến và intellisense, hỗ trợ biên dịch/tung ra/gỡ lỗi, hầu hết các lập trình viên đều đến mong đợi từ một IDE –

-1

Vấn đề lớn với phông tỷ lệ là chúng phá hủy sự căn chỉnh theo chiều dọc của mã và đây là một mất mát khá lớn khi nói đến viết mã.

Căn chỉnh dọc có thể điều khiển các khối hình chữ nhật trải rộng trên nhiều dòng bằng cách cho phép các thao tác khối như cắt, sao chép, dán, xóa và thụt lề, ẩn ... để dễ dàng thực hiện.

Như một ví dụ xem xét đoạn mã này:

a1 = a111; 
B2 = aaaa; 
c3 = AAAA; 
w4 = wwWW; 
W4 = WWWW; 

Trong một phông chữ mono-spaced các =; tất cả các dòng.

Bây giờ nếu văn bản này được loded vào Lời và hiển thị bằng một tỷ lệ thuận với phông chữ văn bản có hiệu quả biến thành này:

LƯU Ý: thêm khoảng trắng thêm để hiển thị như thế nào =; không còn đường lên:

a1 = a1 1 1; 
B2 = aaaa; 
c3 = A A A A; 
w4 = w w W W; 
W4 = W W W W; 

Với sự liên kết dọc đi những khối đẹp mã biến mất một cách hiệu quả.

Cũng bởi vì con trỏ không còn được đảm bảo di chuyển theo chiều dọc (tức là số cột không phải lúc nào cũng không đổi từ dòng này sang dòng khác).

+1

Trong câu hỏi của tôi, tôi tuyên bố rằng "Tôi muốn thiết lập các điểm dừng tab cho các thụt lề của tôi và xếp các chữ ký chức năng và các hàng của các câu lệnh gán." Một trình soạn thảo tỷ lệ có thể (tùy chọn) thông minh về việc chuyển đổi/từ không gian cố định khi sao chép/dán và điều hướng con trỏ (xuống sẽ luôn nằm trên cùng một cột) –

+0

Trong mã giả mẫu tôi đã cung cấp, không có tab nào và một khoảng trắng , do đó, không có số lượng tab dừng lại sẽ làm cho dòng văn bản lên trên screeen. Vị trí của; sẽ thay đổi theo từng dòng và ít nhất là đối với tôi và cách tôi viết mã, đó là một nút hiển thị. – jussij

+3

"=" và ";" các ký tự không còn xếp hàng: điều này đúng, nhưng tôi nghĩ đó không phải là một ví dụ hay. Thực tế, bạn có bao nhiêu hàng câu lệnh gán với tất cả các tên biến có cùng độ dài và tất cả các câu lệnh còn lại đều có cùng độ dài? Nếu chúng có độ dài khác nhau và bạn muốn ký tự "=" xếp hàng, bạn có thể sử dụng tab, theo ý muốn và mọi thứ vẫn hoạt động. (Và nếu bạn đang dành thời gian xếp hàng các ký hiệu dòng ";" của bạn ... tốt, thời gian của bạn có thể được sử dụng tốt hơn ở nơi khác.) – Beska

2

Tôi tự hỏi tại sao không ai thực sự trả lời câu hỏi của bạn và tại sao câu trả lời được chấp nhận không thực sự liên quan đến câu hỏi của bạn. Nhưng dù sao ...

một font theo tỷ lệ IDE

Trong Eclipse, bạn có thể cchoose bất kỳ font trên hệ thống của bạn.

bộ tab dừng cho indents tôi

Trong Eclipse, bạn có thể cấu hình tự động thụt đầu dòng, trong đó có đặt nó vào "tab chỉ".

xếp chữ ký chức năng và các hàng của câu lệnh gán

Trong Eclipse, tự động thụt đầu dòng nào đó.

có thể được chỉ định bằng điểm thay vì vị trí ký tự cố định.

Xin lỗi, tôi không nghĩ Eclipse có thể giúp bạn ở đó. Nhưng nó là mã nguồn mở. ;-)

đậm và in nghiêng

Eclipse có đó.

cỡ chữ khác nhau và thậm chí style sheets sẽ được mát mẻ

Tôi nghĩ rằng Eclipse chỉ sử dụng một phông chữ và font-size cho từng loại tập tin (ví dụ tập tin nguồn Java), nhưng bạn có thể có phong cách khác nhau " trang tính "cho các loại tệp khác nhau.

+0

Câu trả lời được chấp nhận là câu trả lời gần nhất mà tôi muốn ("Có ai biết cách tốt nhất để bắt đầu xây dựng một câu trả lời không?"). Tôi không muốn chỉ chèn các tab có độ dài cố định. Tôi muốn các tab có độ dài thay đổi trên cơ sở từng dòng như trong trình xử lý văn bản. Tôi không muốn IDE thụt vào cho tôi — các indents của tôi phức tạp –

+0

Ah. :) Tôi đã không nhận được điều đó từ hình ảnh của bạn, nó trông giống như indentation đồng bằng cũ với tôi. – myplacedk

0

Mọi người đều phàn nàn về các nhận xét không xếp hàng.

Dường như với tôi rằng có một giải pháp rất đơn giản: Xác định không gian đơn vị làm ký tự rộng nhất trong phông chữ. Bây giờ, không gian tương ứng tất cả các ký tự ngoại trừ không gian. không gian chiếm nhiều không gian để xếp hàng nhân vật tiếp theo, nơi nó sẽ là nếu tất cả các ký tự đặt trước trên dòng là rộng nhất trong phông chữ.

ví dụ:

iiii_space_Foo

xxxx_space_Foo

sẽ xếp hàng lên "Foo", với không gian sau khi "i" là rộng hơn nhiều so với sau khi "x".

Vì vậy, hãy gọi nó là không gian đàn hồi. thay vì tab-stop.

Nếu bạn là biên tập viên thông minh, xử lý ý kiến ​​đặc biệt, nhưng đó chỉ là gravy

+1

Điều đó thật không may sẽ đánh bại mục đích sử dụng phông chữ có độ rộng tỷ lệ. Chỉ cần thử làm điều này, nó có lẽ sẽ khó đọc hơn một phông chữ có chiều rộng cố định. – Karl

+1

Điều này giống như những gì Macintosh thường làm khi in tài liệu ở chế độ "nháp" trên Imagewriter; nó sẽ in bằng cách sử dụng phông chữ đơn cách, nhưng thêm khoảng trắng sao cho các từ trong tài liệu được in sẽ kết thúc nhiều hơn hoặc ít hơn ở cùng một vị trí như với phông chữ tỷ lệ. Kết quả chỉ có thể được mô tả là ghê tởm. – supercat

1

Phần thụt đầu dòng của câu hỏi của bạn đang được thực hiện ngày hôm nay trong một sản phẩm thực tế, mặc dù có thể để ngay cả một mức độ cao hơn của tự động hóa hơn bạn tưởng tượng, sản phẩm tôi đề cập là XSLT IDE, nhưng các nguyên tắc định dạng giống nhau sẽ làm việc với hầu hết các cú pháp mã thông thường (nhưng không phải tất cả).

Điều này thực sự phải được nhìn thấy trong video để hiểu được tất cả (xin lỗi về bản nhạc trở lại). Ngoài ra còn có một sản phẩm spin-off trình soạn thảo XML ánh sáng, XMLQuire, hoạt động như một người biểu diễn công nghệ. Ảnh chụp màn hình dưới đây cho thấy XML được định dạng với các quy tắc định dạng khá phức tạp trong IDE XSLT này, nơi tất cả thụt lề được thực hiện theo kiểu bộ xử lý văn bản, sử dụng lề trái - không phải dấu cách hoặc ký tự tab.

enter image description here

Để nhấn mạnh khái niệm định dạng này, tất cả các nhân vật đã được đánh dấu để hiển thị nơi trái lề mở rộng để giữ thụt đầu dòng. Tôi sử dụng thuật ngữ Định dạng ảo để mô tả điều này - không giống như các tab tab đàn hồi, vì đơn giản là không có tab, chỉ thông tin lề là một phần của định dạng 'đoạn' (mã RTF được sử dụng tại đây). Trình phân tích cú pháp định dạng lại liên tục, trong cùng một đường chuyền như tô màu cú pháp.

Phông chữ tỷ lệ không được sử dụng ở đây, nhưng nó có thể đã được khá dễ dàng - bởi vì thụt lề được đặt trong TWIPS. Trải nghiệm chỉnh sửa khá hấp dẫn bởi vì, khi bạn cấu trúc lại mã (XML trong trường hợp này), có lẽ thông qua kéo và thả hoặc bằng cách kéo dài độ dài của giá trị thuộc tính, thụt đầu dòng chỉ tái lưu lại để khớp - không có tab- hoặc nút 'định dạng lại' để nhấn.

Vì vậy, sự thụt đầu dòng ở đó, nhưng công việc phông chữ là một vấn đề phức tạp hơn. Tôi đã thử nghiệm với điều này, nhưng thấy rằng nếu phông chữ được chọn lại khi bạn nhập, chuyển dịch ngang của mã quá mất tập trung - có thể sẽ cần một lệnh 'phông chữ định dạng' do người dùng khởi tạo. Sản phẩm này cũng có tích hợp công nghệ Ink/Handwriting cho chú giải mã, nhưng tôi chưa khai thác nó trong bản phát hành trực tiếp.

0

Để tôi nhớ lại các đối số về việc sử dụng từ khóa 'var' trong C#. Mọi người ghét nó, và nghĩ rằng nó sẽ làm cho mã ít rõ ràng hơn. Ví dụ: bạn không thể biết loại như sau:

var x = GetResults("Main"); 
foreach(var y in x) 
{ 
    WriteResult(x); 
} 

Lý do của chúng là bạn không thể xem x là mảng, Danh sách hay bất kỳ IEnumerable nào khác. Hay kiểu y là gì. Theo tôi, sự không rõ ràng đã không phát sinh từ việc sử dụng var, nhưng từ việc chọn các tên biến không rõ ràng. Tại sao không chỉ nhập:

var electionResults = GetRegionalElactionResults("Main"); 
foreach(var result in electionResults) 
{ 
    Write(result); // you can see what you're writing!! 
} 

"Nhưng bạn vẫn không thể thấy kiểu cuộc bầu cửĐược xác nhận!" - thật sự nó có ảnh hưởng sao? Nếu bạn muốn thay đổi kiểu trả về của GetRegionalElectionResults, bạn có thể làm như vậy. Bất kỳ IEnumerable sẽ làm.

Tua nhanh đến bây giờ. Mọi người muốn căn chỉnh các nhận xét có mã tương tự:

int var2  = 1; //The number of days since startup, including the first 
int longerVar = 2; //The number of free days per week 
int anotherVar = 38; //The number of working hours per week 

Vì vậy, không có chú thích, mọi thứ đều không rõ ràng. Và nếu bạn không căn chỉnh các giá trị, bạn không thể tách chúng khỏi các variales. Nhưng bạn có?Điều gì về điều này (bỏ qua những viên đạn vui lòng)

  • int daysSinceStartup = 1; // bao gồm
  • int freeDaysPerWeek = 2;
  • int workingHoursPerWeek = 38;

Nếu bạn cần nhận xét về MỌI LINE, bạn đang làm điều gì đó sai. "Nhưng bạn vẫn cần phải sắp xếp các GIÁ TRỊ" - phải không? 38 phải làm gì với 2?

Trong C# Hầu hết các khối mã có thể dễ dàng liên kết chỉ sử dụng các tab (hoặc acually, bội số của bốn không gian):

  • var regionsWithIncrease =
    • từ kết quả trong GetRegionalElectionResults()
    • kết quả ở đâu .TotalCount> result> PreviousTotalCount & &
      • result.PreviousTotalCount> 0 // vừa mới khu vực
    • chọn kết quả.Region;
  • foreach (var khu vực trong regionsWithIncrease)
  • {
    • Write (vùng);
  • }

Bạn không bao giờ nên sử dụng line-to-dòng bình luận và bạn nên hiếm khi cần phải theo chiều dọc sắp xếp mọi thứ. Hiếm khi, không bao giờ. Vì vậy, tôi hiểu nếu một số bạn thích một phông chữ đơn cách. Tôi thích khả năng đọc font chữ Noto Sans hoặc Source Sans Pro. Các phông chữ này có sẵn tự do từ Google và giống với Calibri, nhưng được thiết kế để lập trình và do đó có tất cả các đặc điểm cần thiết:

  • Big:; . , vì vậy bạn có thể thấy rõ sự khác biệt
  • Rõ ràng khác biệt 0Oo và khác biệt Il |
Các vấn đề liên quan