这是一个SQL-Java编码风格问题......
如何别人在这里处理Java创建复杂的自定义查询干净?
我说的是一个看似简单的准备字符串的任务,这是要执行的SQL语句.
我知道HQL以及存储过程,但说实话,我并不喜欢这些解决方案.也许我可以用不同的方式说服.存储过程对于部署/维护很烦人,在我的情况下解析性能不是一个大问题 - 灵活性优先.HQL似乎是一个很大的飞跃,并且对我的复杂查询有一些限制.
要清楚,我说的是这样的超丑看代码:
return
"(" + topTwenty + ")" +
"UNION " +
"(" + twentyBeforeMe + ")" +
"UNION " +
"(" + meDummyQuery + ")" +
"UNION " +
"(" + twentyAfterMe + ")";
Run Code Online (Sandbox Code Playgroud)
例如,变量topTwenty也是类似地创建的子查询.
我从来没有想过我会说这个,但它在PHP中更干净,它有多行字符串和$变量嵌入字符串.
人们有没有使用过琐碎的模板库?你如何整齐地保持程序中的字符串?或者你把它们放在一个单独的文件中(似乎对我来说似乎很烦人).
以下两个代码片段的优点和缺点是什么:
return n==0 ? 0 : n==1 ? 1 : fib(n-1) + fib(n-2);
Run Code Online (Sandbox Code Playgroud)
和
if(n==0)
return 0;
if(n==1)
return 1;
return fib(n-1) + fib(n-2);
Run Code Online (Sandbox Code Playgroud)
用于计算Fibonacci序列中的第n个字母?
你赞成哪一个?为什么?
我正在尝试做一个凸壳方法,小问题是我需要得到所有三个连续顶点的集合,如下所示:
private void isConvexHull(Ponto[] points) {
Arrays.sort(points);
for (int i = 0; i <points.length; i++) {
isClockWise(points[i],points[i+1],points[i+2]);
}
//...
}
Run Code Online (Sandbox Code Playgroud)
我总是做一些我不认为干净的代码.请帮助我找到一种或多种方法吗?我希望它是循环的,即,如果我的fisrt点是数组中的最后一个元素,第二个元素将是列表中的第3个元素,该集合中的第3个元素将是列表中的第2个元素, 等等.它们必须是连续的,就是这样.
我有以下结构:
template <typename T>
struct Odp
{
T m_t;
};
Run Code Online (Sandbox Code Playgroud)
我想专门化它,所以我可以添加一个运算符,以便类型与STL集很好地匹配.(我无法Odp直接修改;它是遗留代码.)以下是我看到的两种方法:
struct Ftw : public Odp<int>
{
bool operator==(const Ftw& rhs)
{
return m_t == rhs.m_t;
}
};
struct FtwContain
{
Odp<int> odp;
bool operator==(const FtwContain& rhs)
{
return odp.m_t == rhs.odp.m_t;
}
};
Run Code Online (Sandbox Code Playgroud)
有没有理由比第一个更喜欢第二个?第一种方法似乎允许更清晰的代码:
Ftw ftw;
ftw.m_t = 2;
FtwContain ftwContain;
ftwContain.odp.m_t = 2;
Run Code Online (Sandbox Code Playgroud)
(另外,我很可能对"模板专业化"这个术语的含义感到困惑.)
我在变量名中使用了某个后缀,下划线和属性的组合.如 :
$variable_html = variable that will be parse in html code.
$variable_str = string variable
$variable_int = integer variable
$variable_flo = float variable.
Run Code Online (Sandbox Code Playgroud)
你有其他视觉线索吗?也许你为变量,函数名,类结构或其他东西写的东西可以帮助别人阅读而不仅仅是编译器?
在下面显示的示例中,前一种方法SearchResult为每次迭代实例化一个类型的对象,而后者只实例化一次对象并将其用于所有迭代.
using (DbDataReader reader = (DbDataReader)dbObject.ExecuteReader(command))
{
if (reader.HasRows)
{
List<SearchResult> searchResults = new List<SearchResult>();
while (reader.Read())
{
SearchResult searchResult = new SearchResult();
searchResult.AppName = Convert.ToString(reader["AppName"]);
searchResults.Add(searchResult);
}
}
}
Run Code Online (Sandbox Code Playgroud)
要么
using (DbDataReader reader = (DbDataReader)dbObject.ExecuteReader(command))
{
if (reader.HasRows)
{
List<SearchResult> searchResults = new List<SearchResult>();
SearchResult searchResult = new SearchResult();
while (reader.Read())
{
searchResult.AppName = Convert.ToString(reader["AppName"]);
searchResults.Add(searchResult);
}
}
}
Run Code Online (Sandbox Code Playgroud)
哪种方法更好?
谢谢,请理睬我的天真.:)
如果您的代码行带有括号语句,那么在括号之前是否包含空格?
例如,它应该是
if()
要么
if ()
提前致谢!
一旦代码工作,我们就一直在世界上让它看起来很好.
如果我们需要突然快速变化,那么除了搞乱标准编码风格之外我们别无选择.
这种方式是专业和广泛使用的吗?或者,在每个时间点编码时养成保持完美秩序的习惯会更好吗?
我的方法:
<?
switch($id)
{
case 1:
?>
a lots of html stuff goes here...
<?
break;
case 2:
?>
a lots of html stuff goes here2...
<?
break;
}
?>
Run Code Online (Sandbox Code Playgroud)
有什么方法可以做这个漂亮的东西吗?我的意思是更具可读性或什么?我真的应该这样做.(还没学会聪明......)
哪一个是最好的写作方式:
string* str
Run Code Online (Sandbox Code Playgroud)
要么:
string *str
Run Code Online (Sandbox Code Playgroud)
其中一个有副作用的缺点吗?
谢谢
coding-style ×10
c ×3
c++ ×3
java ×2
php ×2
c# ×1
formatting ×1
html ×1
mysql ×1
object ×1
pointers ×1
preferences ×1
sql ×1
templates ×1