我知道它Activities
的目的是代表我的应用程序的单个屏幕,同时Fragments
设计为可重用的UI布局,其中嵌入了逻辑.
直到不久前,我开发了一个应用程序,因为它说应该开发它们.我创建了一个Activity
代表我的应用程序的屏幕并使用Fragments for ViewPager
或Google Maps
.我很少创建ListFragment
可以多次重用的UI或其他UI.
最近我偶然发现一个项目只包含2 Activities
个是一个SettingsActivity
而另一个是MainActivity
.它的布局中MainActivity
填充了许多隐藏的全屏UI片段,只显示了一个.在Activity
逻辑FragmentTransitions
中,应用程序的不同屏幕之间存在许多.
我喜欢这种方法的原因是因为应用程序使用了一个ActionBar
,它保持原样并且不会随着屏幕切换动画一起移动,这就是Activity
切换时发生的情况.这为这些屏幕转换提供了更流畅的感觉.
所以我想我要问的是分享你关于这个主题的当前开发方式,我知道它看起来可能看起来像一个基于意见的问题,但我把它视为一个Android设计和架构问题...不是真的基于意见的一个.
更新(01.05.2014):继来自Square的Eric Burke的演示之后(我不得不说这是一个很棒的演示文稿,为Android开发人员提供了许多有用的工具.而且我与Square没有任何关系)
http://www.infoq.com/presentations/Android-Design/
根据我过去几个月的个人经验,我发现构建应用程序的最佳方法是创建一组片段,这些片段代表应用程序中的流并将所有这些片段集中在一个片段中Activity
.所以基本上你Activities
的应用程序的数量与流量的数量相同.这样,操作栏在所有流程的屏幕上保持完整,但正在重新创建流程,这很有意义.正如埃里克伯克所说,并且我也已经意识到,尽可能少Activities
地使用的哲学并不适用于所有情况,因为它在他所谓的"上帝"活动中造成混乱.
如何在现代x86-64 Intel CPU上实现每个周期4个浮点运算(双精度)的理论峰值性能?
据我所知,SSE 需要三个周期,add
而mul
大多数现代Intel CPU需要五个周期才能完成(参见例如Agner Fog的"指令表").由于流水线操作,add
如果算法具有至少三个独立的求和,则每个周期可以获得一个吞吐量.因为打包addpd
和标量addsd
版本都是如此,并且SSE寄存器可以包含两个,double
每个周期的吞吐量可以高达两个触发器.
此外,似乎(虽然我没有看到任何适当的文档)add
并且mul
可以并行执行,给出每个周期四个触发器的理论最大吞吐量.
但是,我无法使用简单的C/C++程序复制该性能.我最好的尝试导致大约2.7个翻牌/周期.如果有人可以贡献一个简单的C/C++或汇编程序,它可以表现出非常高兴的峰值性能.
我的尝试:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <sys/time.h>
double stoptime(void) {
struct timeval t;
gettimeofday(&t,NULL);
return (double) t.tv_sec + t.tv_usec/1000000.0;
}
double addmul(double add, double mul, int ops){
// Need to initialise differently otherwise compiler might optimise away
double sum1=0.1, sum2=-0.1, sum3=0.2, sum4=-0.2, sum5=0.0;
double mul1=1.0, mul2= 1.1, mul3=1.2, mul4= 1.3, …
Run Code Online (Sandbox Code Playgroud) 随着像jQuery这样的JavaScript框架使客户端Web应用程序更丰富,更实用,我开始注意到一个问题......
你是如何保持这种组织的?
我提到了jQuery,但它实际上是任何JavaScript代码.我发现随着线条开始堆积起来,管理脚本文件或找到你要找的东西变得更加困难.我发现最大的问题可能是有很多方法可以做同样的事情,很难知道哪一个是目前普遍接受的最佳实践.
是否有关于保持.js文件与应用程序其余部分一样美观和整洁的最佳方法的一般建议?或者这仅仅是IDE的问题?那里有更好的选择吗?
编辑
这个问题旨在更多地关注代码组织而不是文件组织.有一些非常好的合并文件或分割内容的例子.
我的问题是:目前普遍接受的组织实际代码的最佳实践方法是什么?您的方式是什么,甚至是推荐的方式与页面元素交互并创建可互相冲突的可重用代码?
有些人列出了名称空间,这是一个好主意.还有什么其他方法,更具体地说是处理页面上的元素并保持代码整洁有序?
我只是掌握了MVC框架,我常常想知道模型中应该有多少代码.我倾向于有一个数据访问类,其方法如下:
public function CheckUsername($connection, $username)
{
try
{
$data = array();
$data['Username'] = $username;
//// SQL
$sql = "SELECT Username FROM" . $this->usersTableName . " WHERE Username = :Username";
//// Execute statement
return $this->ExecuteObject($connection, $sql, $data);
}
catch(Exception $e)
{
throw $e;
}
}
Run Code Online (Sandbox Code Playgroud)
我的模型往往是映射到数据库表的实体类.
模型对象是否应具有所有数据库映射属性以及上面的代码,或者可以将实际上数据库工作的代码分开吗?
我最终会有四层吗?
REST系统和RESTful系统之间有什么区别?
从我读过的一些事情来看,所谓的REST服务实际上就是REST服务.那两者之间有什么区别呢.
我想要的不是Redis和MongoDB之间的比较.我知道他们是不同的; 性能和API完全不同.
Redis非常快,但API非常'原子'.MongoDB将占用更多资源,但API非常易于使用,我对此非常满意.
它们都很棒,我想尽可能多地使用Redis进行部署,但是很难编码.我想尽可能多地在开发中使用MongoDB,但它需要一台昂贵的机器.
那么你怎么看待它们的使用呢?什么时候选Redis?什么时候选择MongoDB?
这个问题不是关于何时一般使用GET或POST; 它是关于处理Web应用程序注销的推荐方法.我已经在一般意义上找到了关于GET和POST之间差异的大量信息,但我没有找到这个特定场景的明确答案.
作为一个实用主义者,我倾向于使用GET,因为实现它比POST更简单; 只需删除一个简单的链接就可以了.这似乎是我能想到的绝大多数网站的情况,至少从头脑中可以看出来.甚至Stack Overflow也可以使用GET进行注销.
让我犹豫不决的是(尽管很老)一些论点,即一些网络加速器/代理通过访问和检索他们在页面中找到的每个链接来预先缓存页面,因此用户在点击它们时会得到更快的响应.我不确定这是否仍然适用,但如果是这种情况,那么从理论上讲,一旦有用这种加速器的用户在登录后就会被赶出应用程序,因为她的加速器会找到并检索注销链接,即使她从未点击过它.
到目前为止我所阅读的所有内容都建议POST应该用于"破坏性操作",而不改变应用程序内部状态的操作(如查询等)应该用GET处理.基于此,这里真正的问题是:
从应用程序注销被视为破坏性操作/是否会改变应用程序的内部状态?
在Model-View-ViewModel体系结构WPF应用程序中实现ViewModel时,似乎有两个主要选择如何使其成为databindable.我已经看到了DependencyProperty
用于View将要绑定的属性的实现,我已经看到了实现的ViewModel INotifyPropertyChanged
.
我的问题是我应该何时优先选择其中一个?有任何性能差异吗?将ViewModel依赖项提供给WPF真的是个好主意吗?做出设计决定时还需要考虑什么?
有人可以解释软件设计和软件架构之间的区别吗?
进一步来说; 如果你告诉别人告诉你"设计" - 你期望他们出现什么?"架构"也是如此.
我目前的理解是:
如我错了请纠正我.我已经提到维基百科有关于http://en.wikipedia.org/wiki/Software_design和http://en.wikipedia.org/wiki/Software_architecture的文章,但我不确定我是否正确理解它们.
architecture ×10
rest ×2
android ×1
assembly ×1
c ×1
c# ×1
c++ ×1
class ×1
data-binding ×1
definition ×1
formatting ×1
get ×1
javascript ×1
jquery ×1
model ×1
mongodb ×1
mvvm ×1
nosql ×1
oop ×1
optimization ×1
php ×1
post ×1
redis ×1
wpf ×1