patterncsharpMinor
Simple app to take username and password from the user
Viewed 0 times
simpletheapptakeuserusernamepasswordandfrom
Problem
I'm beginner at programming (I guess it's quite obvious) and this is my small "app" I tried to make, that takes username and password from the user. Could you give me some advice on how can I improve it?
```
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
namespace Login
{
class Program
{
static void Main(string[] args)
{
Initialization();
}
public static void Initialization()
{
int x = 0;
int choice = 0;
while (x < 2)
{
Console.Clear();
Console.Write("Username: ");
string username = Console.ReadLine();
Console.Write("\nPassword: ");
string password = Console.ReadLine();
Console.WriteLine();
string option1 = "Login";
string option2 = "Exit";
Console.WriteLine(option1 + "\n" + option2);
while (x < 2)
{
ConsoleKeyInfo info = Console.ReadKey();
if (info.Key == ConsoleKey.UpArrow)
{
Console.Clear();
Console.ResetColor();
Console.WriteLine("Username: {0}", username);
Console.WriteLine("\nPassword: {0}\n", password);
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine(option1);
Console.ResetColor();
Console.WriteLine(option2);
choice = 1;
}
else if (info.Key == ConsoleKey.DownArrow)
{
Console.Clear();
Console.ResetColor();
Console.WriteLine("Username: {0}", username);
Console.WriteLine("\
```
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
namespace Login
{
class Program
{
static void Main(string[] args)
{
Initialization();
}
public static void Initialization()
{
int x = 0;
int choice = 0;
while (x < 2)
{
Console.Clear();
Console.Write("Username: ");
string username = Console.ReadLine();
Console.Write("\nPassword: ");
string password = Console.ReadLine();
Console.WriteLine();
string option1 = "Login";
string option2 = "Exit";
Console.WriteLine(option1 + "\n" + option2);
while (x < 2)
{
ConsoleKeyInfo info = Console.ReadKey();
if (info.Key == ConsoleKey.UpArrow)
{
Console.Clear();
Console.ResetColor();
Console.WriteLine("Username: {0}", username);
Console.WriteLine("\nPassword: {0}\n", password);
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine(option1);
Console.ResetColor();
Console.WriteLine(option2);
choice = 1;
}
else if (info.Key == ConsoleKey.DownArrow)
{
Console.Clear();
Console.ResetColor();
Console.WriteLine("Username: {0}", username);
Console.WriteLine("\
Solution
Just a few things:
-
Don't use "string concatenation" (
Should be:
Just as well, you should, ideally, switch this to two
-
A method should have on responsibility (SRP):
The
- Don't use
\nas a literal, we useEnvironment.NewLineinstead.
-
Don't use "string concatenation" (
string + string), instead use string.Join, string.Format or a StringBuilder. I.e.:Console.WriteLine(option1 + "\n" + option2);Should be:
Console.WriteLine("{0}{1}{2}", option1, Environment.NewLine, option2);Just as well, you should, ideally, switch this to two
Console.WriteLine statements:Console.WriteLine(option1);
Console.WriteLine(option2);-
A method should have on responsibility (SRP):
public static bool Login(string username, string password)
{
if(username == "asd" && password == "asd")
{
Console.WriteLine("Welcome");
return true;
}
else
{
return false;
}
}The
Console.WriteLine statement does not belong there, Login should simply return true or false in this case.Code Snippets
Console.WriteLine(option1 + "\n" + option2);Console.WriteLine("{0}{1}{2}", option1, Environment.NewLine, option2);Console.WriteLine(option1);
Console.WriteLine(option2);public static bool Login(string username, string password)
{
if(username == "asd" && password == "asd")
{
Console.WriteLine("Welcome");
return true;
}
else
{
return false;
}
}Context
StackExchange Code Review Q#150194, answer score: 5
Revisions (0)
No revisions yet.