1. Make it brandable

Brandable, Hyphens and numbers are a real problem because they don't sound like a brand. They sound generic, or strange.
For example, if we wanted to create a pasta website that has pasta recipes and sells some pasta related e-commerce products on it;
  • Pasta-shop.com would be hard to brand, say, or remember.
  • PastaAficionado.com sounds brandable, is unique, but quite challenging to say.
  • PastaLabs.com would be good because it has a scientific connotation to it, is very brandable, unique, memorable, and stands out.

2. Make it pronounceable

You might be thinking, why is it so important that it's pronounceable? Most people are going to be typing it or clicking a link.".
It matters because of "processing fluency". A cognitive bias that human beings have where we remember (and have more positive associations with) things that we can easily say and think about. That includes pronounceability in our own minds.
This is going to vary on the language and region that you're targeting
If you can't easily say the name, you're going to lose processing fluency, memorability, and the benefits of brandability that you've created.

3. Make it short

Length matters because of the processing fluency that we talk about above.
The fewer characters a domain name has, the easier it is to type, say, share, and the less it gets shortened on social media sharing platforms and search results.
Shorter is better.

4. Bias towards .com

I know, it's 2017. Why are we still talking about .com? The internet's been around 20-plus years. Why does .com matter so much when there are so many TLD extension options? The answer is, .com is the most recognized and most accessible TLD.
Cognitive fluency dictates that we should go with something easy, that people have an association with, and .com is still the primary TLD. If you want to build up a very brandable domain that can do well, you want a .com. Probably, eventually, if you are very successful, you're going to have to try and go capture it anyway, and so I would bias you to get it if you can
If it's unavailable, my suggestion would be to go with the .net, .co, or a known ccTLD. Those are your best bets. A known ccTLD might be something like .ca in Canada or .it in Italy.

5. Avoid trademark infringement

You have to be careful because it's not whether you think your domain name could be confused. It's whether you think a judge in a jurisdiction, where a company might take legal action against you, would consider your domain name confusable.
This can also create brand confusion, which is hard for your brandability.
You should talk to an attorney or a legal professional if you have real concerns.
Trademark owners can attempt to sue a domain name owner, who's owning the domain legitimately and using it for business purposes, and that sucks.

6. Make it intuitive

A good domain name gives people a strong idea of what a website will be about. Being able to look at a domain name and say, "Oh, they probably do this. This is probably what that company is up to." is a big win.
RetireFund.com for example is pretty obvious, intuitively about retirement savings or investing, and anyone could figure that out.The two words used are both extremely popular in search, not to mention Retire.com sold for over $2 Million and Fund.com sold for $10 million.

7. Use broad keywords

Keywords in a domain name can help with the cognitive fluency biases, but also from an SEO perspective. Google has been biasing away from these exact match and partial match domains, but the anchor text you get from people linking to your domain can help.
If you can get a keyword mention in your domain name that helps make it obvious what you're website is about, go for it. But if you're trying to secure a keyword rich or a keyword targeted domain, I would stay away from those in 2017. They don't carry the weight that they used to, and have negative associations (with users and search engines) that you should avoid.
For example, I would not purchase a domain name like; RecipesForPasta.com or BuyPastaOnline.com. I would instead, go for something very broad like Gusto.com.
Think about Amazon.com or Google.com, which clearly has no association with what it is. These are very well-branded, but don't have keyword richness to them.
It's more of a creative association, just like "gusto" means "taste" in Italian. So I might be tempted to go in that direction instead.

8. It's okay to append or modify it

If your domain name is not available, it's okay to go out and add a suffix or a prefix. It is okay to use an alternate TLD extension, like we talked about previously, and it's okay to be a little bit creative with your online brand.
For example, your trying to brand a travel site.  Utilizing an alternate extension like .netand adding a suffix ie: ForTravel.net or ForHotels.net would be not only acceptable, but very effective.

Good luck choosing your online identity!