除了使用单一责任原则之外,在为应用程序设计类时,人们正在编写,应该记住什么,以保持代码可维护,可重用并遵守OOP原则?
我发现很难设计我正在尝试编写的应用程序类,因为什么时候决定哪个(功能)在哪个类中进行,以及它是否应该真正在派生类中,或者应该有一个抽象类或这个类的接口?
我知道这可能是一个有许多答案的主题,但是有没有人有任何好的指导方针(最好是简单的)来设计易于维护的类和类层次结构,并且在创建大型应用程序时不会弄得一团糟?
编辑:
当有超过10个方法的类时,它们有一个抽象的基类和接口.还有3个在类中全局引用的Singleton类以及更多.听起来需要应用一些"重构"?
对不起,如果这是一个很长的例子,但你看到我面临的问题,我想要一些输入.请看一下设计,而不是技术问题.
我举个例子:
我创建了这个类:(前一阵子)
class ExistingUserLogon : Logon, ILogonUser
{
#region Member Variables
LogonEventArgs _logoneventargs;
LogonData lgndata;
Factory f = Factory.FactoryInstance;
PasswordEncrypt.Collections.AppLoginDataCollection applogindatacollection;
PasswordEncrypt.Collections.SQlLoginDataCollection sqllogindatacollection;
bool? compare;
static ExistingUserLogon existinguserlogon;
PasswordEncrypt.SQLDatabase.DatabaseLogin dblogin;
string databasename = string.Empty;
#endregion
#region Properties
public static ExistingUserLogon ExistingUserLogonInstance
{
get
{
if (existinguserlogon == null)
existinguserlogon = new ExistingUserLogon();
return existinguserlogon;
}
}
public string loginname
{
get;
set;
}
#endregion
#region Contructors
public ExistingUserLogon(bool? compare, LogonData logondata)
{
this.compare = …Run Code Online (Sandbox Code Playgroud) 例如,我从文本文件中提取文本字符串,我需要这些字来形成一个数组.但是,当我做所有这些时,一些单词以逗号(,)或句号(.)结尾,或者甚至附加括号(这都是完全正常的).
我想要做的就是摆脱那些角色.我一直试图在Java中使用那些预定义的String方法来做到这一点,但我无法解决它.
有人可以帮我理解这个查询有什么问题:
DELETE FROM noteproject
INNER JOIN note ON noteproject.noteID = note.noteID
INNER JOIN person ON note.personID = person.personID
WHERE noteID = '#attributes.noteID#'
AND personID = '#attributes.personID#'
Run Code Online (Sandbox Code Playgroud) 我正在寻找在Streams上应用正则表达式的快速而安全的方法.
我在互联网上找到了一些关于将每个缓冲区转换为String然后应用于Regex字符串的示例.
这种方法有两个问题:
RegexStreams ,肯定可以避免.Regex支持:Regex模式有时只有在将两个缓冲区组合在一起时才能匹配(缓冲区1以匹配的第一部分结束,缓冲区2以匹配的第二部分开始).转换为字符串的方式无法原生地处理这种类型的匹配,我必须提供更多信息,例如模式可以匹配的最大长度,这根本不支持+和*正则表达式标志,并且永远不会支持(无限制匹配)长度).因此,转换为字符串的方式并不快,并且不完全支持Regex.
是否有任何方法/库可用于Regex在Streams 上应用而无需转换为字符串并具有完整的Regex支持?
我想知道Asp.NET如何处理多个请求?例如:当1000个用户从Asp.net安装的Web服务器请求页面时,它们是按顺序排队和处理还是有其他方法可以同时处理这些请求?
我找到了一些文章,但是它们太深而且长,我需要几个快速回答我的问题?
非常感谢你.
编辑:
我在C#书中读过Threads,我想知道asp.net如何处理多个请求.它是为每个请求创建一个线程还是将它们放入队列以供以后处理或以其他方式处理?
获取所有具有class属性的div
$('div[class]')
Run Code Online (Sandbox Code Playgroud)
获取所有没有class属性的div
$('div[class!=""]')
Run Code Online (Sandbox Code Playgroud)
这段代码有效,但我不明白为什么它有效.如果上面的代码工作,那么具有class属性的所有div的代码应该是
$('div[class=""]')
Run Code Online (Sandbox Code Playgroud)
这不会产生任何结果.
我想测试Mono AOT,所以我用MonoDevelop编写了一个简单的控制台应用程序:
using System;
namespace abc
{
public class Program
{
public static void Main()
{
Console.WriteLine("Hello World!");
}
}
}
Run Code Online (Sandbox Code Playgroud)
它在bin/debug中创建了一个名为"abc.exe"的文件.当我尝试做的时候:
mono abc.exe
Run Code Online (Sandbox Code Playgroud)
有效.所以,我试着AOT它.我做了:
mono --aot abc.exe
Run Code Online (Sandbox Code Playgroud)
它创建了一个名为abc.exe.so的文件.当我尝试启动它时,它会抛出"Segmentation fault(core dumped)"错误.继承单声道的输出--aot:
Code: 51 Info: 5 Ex Info: 8 Unwind Info: 31 Class Info: 30 PLT: 2 GOT Info: 11 GOT Info Offsets: 16 GOT: 20 Offsets: 48
Compiled 2 out of 3 methods (66%)
1 methods have other problems (33%)
Methods without GOT slots: 1 (33%)
Direct calls: 0 (100%) …Run Code Online (Sandbox Code Playgroud) 当用户登录时,我得到他/她的ID并将其保存在会话变量中.我想知道的是,这是要走的路吗?或者我应该使用cookies?所以它会自动登录等等.
session_start();
ifcorrectlogin {
$_SESSION['id'] = mysql_result($loginQuery, 0, 'user_id');
}
Run Code Online (Sandbox Code Playgroud)
你如何验证你的用户?
//新手