Tôi là sinh viên đại học (khoa học máy tính) và vừa mới bắt đầu một lớp lập trình C#. Đối với các bài tập của chúng tôi, tôi đã sử dụng một lớp được gọi là "Hiển thị", nơi tôi đặt bất kỳ đầu ra bàn điều khiển nào có thể được sử dụng nhiều lần trong suốt một dự án. Ví dụ, một yêu cầu để tiếp tục hoặc thoát khỏi chương trình. Thay vì gõ nó nhiều lần trong Main()
Tôi chỉ gọi phương thức từ lớp Display
.sử dụng đúng các lớp học?
Một học sinh khác trong một cấp độ cao hơn đã nói với tôi rằng tôi không nên làm điều này. Đó là thực hành mã hóa kém và tôi chỉ nên bao gồm tất cả các phương thức trong lớp chính (có chứa Main()
) và chỉ sử dụng lớp khác khi thật cần thiết.
Tôi chỉ đang tìm một số đầu vào và tư vấn.
Tôi được yêu cầu bao gồm mã. Ban đầu tôi đã định, nhưng không muốn đăng bài này quá lâu. Tôi đã chọn một bài tập khá ngắn. Tôi muốn làm rõ rằng tôi chỉ học hỏi để mã không thanh lịch như nhiều người trong số các bạn có thể viết. Phê bình mang tính xây dựng được chào đón rất nhiều.
Cuối cùng tôi chỉ đang chơi với việc sử dụng các lớp học. Tôi biết rằng một số phương thức trong lớp Display có thể dễ dàng ở trong Main().
Đây là lớp học Chương trình có chứa Main()
namespace Chapter_6_10
{
class Program
{
static void Main()
{
string triangle = "", result = " ";;
char printingCharacter = ' ';
int peakNumber = 0;
Display.Instructions();
Display.Continue();
// perform a do... while loop to build triangle up to peak
do
{
Console.Clear();
Request.UserInput(out printingCharacter, out peakNumber);
int counter = 1, rowCounter = 0;
do
{
do
{
triangle += printingCharacter;
rowCounter++;
}
while (rowCounter < counter);
counter++;
rowCounter = 0;
triangle += "\n";
}
while(counter != peakNumber);
// perform a do... while loop to build triangle from peak to base
do
{
do
{
triangle += printingCharacter;
rowCounter++;
}
while (rowCounter < counter);
counter--;
rowCounter = 0;
triangle += "\n";
}
while (counter != 0);
Console.Clear();
Console.WriteLine(triangle); // display triangle
Display.DoAgain(out result); // see if user wants to do another or quit
triangle = "";
}
while (result != "q");
}
}
Đây là lớp Display
namespace Chapter_6_10
{
// This class displays various outputs required by program
class Display
{
// This method display the instructions for the user
public static void Instructions()
{
Console.WriteLine("\nThis program will ask you to enter a character to be used "
+ " to create triangle."
+ "\nThen you will be asked to enter a number that will represent the"
+ "\ntriangles peak."
+ "\nAfter your values have been received a triangle will be drawn.");
}
// This method displays the choice to continue
public static void Continue()
{
Console.WriteLine("\n\nPress the enter key when you are ready to continue...");
Console.ReadLine();
}
// This method displays an error message
public static void Error(string ErrorType)
{
Console.WriteLine("\nYou have entered \"{0}\", which is a value that is not valid!"
+ "\nThis is not rocket science."
+ "\n\nTry agian...", ErrorType);
}
// This method will ask user to press enter to do again or 'q' to quit
public static void DoAgain(out string Result)
{
string input = " ";
Console.WriteLine("\nPress enter to run program again"
+ "\nor type the letter 'q' to close the application.");
input = Console.ReadLine();
// convert input to lowercase so that only one test needed
Result = input.ToLower();
}
}
Đây là yêu cầu lớp
namespace Chapter_6_10
{
// This class is used to get user input
class Request
{
public static void UserInput(out char PrintingCharacter, out int PeakNumber)
{
string input = " ";
char testCharacter = ' ';
int testNumber = 0;
// a do... while loop to get Printing Character from user
// use TryParse() to test for correct input format
do
{
Console.Write("\nPlease enter a character to be used to build triangle : ");
input = Console.ReadLine();
bool result = char.TryParse(input, out testCharacter);
if (result)
{
}
else
{
Console.Clear();
Display.Error(input);
input = " ";
}
}
while (input == " ");
// a do... while loop to get number from user
// use TryParse() to test for correct input format
do
{
Console.Write("\nPlease enter a number <between 1 and 10> for the peak of the triangle : ");
input = Console.ReadLine();
bool result = int.TryParse(input, out testNumber);
if (result)
{
if ((testNumber > 0) && (testNumber < 11))
{
}
else
{
Console.Clear();
Display.Error(testNumber.ToString());
input = " ";
}
}
else
{
Console.Clear();
Display.Error(input);
input = " ";
}
}
while (input == " ");
// assigned received values to 'outs' of method
PrintingCharacter = testCharacter;
PeakNumber = testNumber;
}
}
Đó là nó. Điều này sẽ được coi là một cách không hiệu quả để mã? Làm thế nào tôi có thể cải thiện nó?
Cảm ơn tất cả các đầu vào từ trước đến nay. Nó rất có giá trị đối với tôi.
Bạn có thể chia sẻ mã không? Nó dễ dàng hơn để bình luận về mã khi bạn thực sự có thể nhìn thấy nó ... –
Tôi sẽ không đặt câu trả lời này vì nó được đề cập dưới đây, nhưng tôi muốn nói rằng sinh viên khác này là một trong những lý do có quá nhiều mã xấu ngoài kia. Gửi cho anh ta liên kết này đến SO và vui chơi. :) –
Tôi đã thêm mã từ một trong các bài tập của tôi, theo Fredrick Mörk. Mội thông tin đầu vào đều sẽ được xem xét kĩ. – subcan